Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2009-11-23 15:54:17

  mihoo_koz - Użytkownik

mihoo_koz
Użytkownik
Zarejestrowany: 2006-09-27

konsola nagrywanie radia

Witam!

Czy jest jakis soft co by nagrywał radio internetowe i działał w konsoli? Chcę nagrać audycję ale mam dostęp tylko do konsoli.

Offline

 

#2  2009-11-23 16:17:54

  Graffi - Użytkownik

Graffi
Użytkownik
Skąd: Sulejówek
Zarejestrowany: 2005-10-03
Serwis

Re: konsola nagrywanie radia

mplayer -ao pcm http://stacja.pl:port

Offline

 

#3  2009-11-23 21:29:54

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Brno, Česko
Zarejestrowany: 2007-12-22
Serwis

Re: konsola nagrywanie radia

Kiedyś z azhagiem potrzebowaliśmy stworzyć narzędzie do nagrywania strumienia radia internetowego. Było ono udoskonalane by rozwiązywało problemy które pojawiały się dopiero w trakcie jego używania. W efekcie radzi sobie z przerwanymi strumieniami, całość przekodowuje do Ogg V i wysyła powiadomienie na Jabbera. Wygląda mniej więcej tak:

Kod:

#!/bin/bash
# Skrypt do nagrywania audycji koncertowych w Radiowej Trójce
# Autor: Mirosław "Minio" Zalewski <miniopl@gmail.com> http://minio.xt.pl

# katalog na koncerty
CEL=$HOME

# Plik źródłowy.
LISTA=$CEL/lista.txt

# Plik logu
LOG=$HOME/www/XXX/trojka-log

ID=$RANDOM

# Zmienna zawiera linijkę z dzisiejszym koncertem albo jest pusta
# regexp jest tak sprytnie pomyślany, że sprawdza czy koncert jest dzisiaj i o tej właśnie godzinie.
KONCERT=$(egrep "^$(date +%-e.%m.%Y).*$(date +%k)\.[0-9]{2} --.*" $LISTA)

if [[ -z $KONCERT ]]; then
        # Dzisiaj nie ma żadnego koncertu, nie mamy tu czego szukać.
        exit;
fi

# Wyciąga minutę, o której zaczyna się koncert.
MINUTA=$(echo "$KONCERT"| awk -F ' -- ' '{print $3}'| cut -d . -f 2)
MINUTA=${MINUTA##0}

TEMP=$(echo "$KONCERT"| awk -F ' -- ' '{print $NF}')
if [ ${#TEMP} -le 3 ]; then
        JAK_DLUGO=$((TEMP + 3))
fi

unset TEMP
JAK_DLUGO=${JAK_DLUGO:-63}

# Liczy różnicę pomiędzy teraz a chwilą rozpoczęcia koncertu - 1 
# (w domyśle ma zaczynać nagrywanie wcześniej, aby nie ominąć ani chwili).
# W zdecydowanej większości przypadków czeka ok. 4 minuty.
if [[ $MINUTA -ne 0 ]]; then
        if [[ $(date +%M) -ne $(( MINUTA - 1)) ]]; then
                sleep $(( ( ( MINUTA - 1 ) - $(date +%M) ) * 60))
        fi
fi

ARTIST=$(echo "$KONCERT" |tail -1 | awk -F ' -- ' '{print $2}')
DESCR=$(echo "$KONCERT" |tail -1 | awk -F ' -- ' '{print $4}')

I=0

echo -e "\n\nRozpoczynam logowanie nagrywania ${ARTIST}." >>"${LOG}"
echo -e "Data: $(date +'%d.%m.%Y'). Godzina: $(date +'%H:%M')\n" >>"${LOG}"

# Nagrywa przez tyle minut 
# (tutaj liczy różnicę między 63 a minutą rozpoczęcia koncertu.
# Idea jest taka, żeby zacząć minutę przed i skończyć dwie minuty po.)
sleep $(( JAK_DLUGO - MINUTA ))m &

SLEEP_PID=$!

# Gdyby nie ustawić tej zmiennej, w pętelce sprawdzałby czy istnieje 
# katalog /proc i w rezultacie nigdy nie rozpoczął nagrywania.
# Przypisuje nieracjonalnie wysoką liczbę aby być pewnym, że taki proces
# przypadkiem nie wystąpi w systemie.
# (Po prostu nie mam pomysłu jak inaczej to zrobić, działa na słowo honoru)
MPLAYER_PID=666894629430327204379

PROTOCOL=http

# Pętelka. Tak długo jak istnieje proces sleep powyżej, sprawdza czy 
# istnieje proces mplayera. Jeżeli nie, uruchamia go.
# Sprawdzanie wykonywane jest co pół minuty.

while [ -e /proc/${SLEEP_PID} ]; do
        if [ ! -e /proc/${MPLAYER_PID} ]; then
                # ripuje stream
                mplayer -nolirc -vc dummy -vo null -ao pcm:file=$CEL/../audio-$ID-$((I++)).wav "${PROTOCOL}://stream.polskieradio.pl/program3" >/dev/null 2>>"${LOG}" &

                MPLAYER_PID=$!

                I=$((I + 1))

                echo -e "\n$(date +'%H:%M'): mplayer nie działał. Uruchamiam.\n" >>"${LOG}"
                if [ ${PROTOCOL} = 'http' ]; then
                        PROTOCOL=mms
                elif [ ${PROTOCOL} = 'mms' ]; then
                        PROTOCOL=http
                fi
        fi
        sleep 30
done

kill ${MPLAYER_PID}

if [ $(ls $CEL/../audio-$ID-* |wc -l) -gt 1 ]; then
        echo -e "\n$(date +'%H:%M'): rozpoczynam łączenie plików wav\n" >>"${LOG}"
        sox $(ls -t --reverse $CEL/../audio-$ID-*) $CEL/../audio-$ID.wav
else
        mv $(ls $CEL/../audio-$ID-*) $CEL/../audio-$ID.wav
fi

echo -e "\n$(date +'%H:%M'): rozpoczynam enkodowanie.\n" >>"${LOG}"
# koduje do OGG V
oggenc -q 3 -o "$CEL/$(date +%Y-%m/%Y.%m.%d)-$(echo $ARTIST| tr ' ' _ ).ogg" \
        -a "$ARTIST" \
        -t "Koncert w Radiowej Trójce -- $(date +%-e.%m\ %Y)" \
        -l "Koncert w Radiowej Trójce -- $(date +%-e.%m\ %Y)" \
        -d "$(date +%F)" \
        -c "DESCRIPTION=$DESCR" $CEL/../audio-$ID.wav >/dev/null 2>>"${LOG}"

echo "Zakończono logowanie o $(date +'%H:%M')" >>"${LOG}"
echo -e "\n---------------------------------------\n" >>"${LOG}"

# wysyła powiadomienia na Jabbera
echo "Dostępny jest nowy koncert. Bezpośredni link do pobrania:
http://tajnaStrona.pl/$(date +%Y-%m/%Y.%m.%d)-$(echo $ARTIST| tr ' ' _ ).ogg

Szczegóły na http://tajnejStronie.pl
(wiadomość generowana automagicznie, nie odpowiadaj na nią)" | \
        sendxmpp -s "Nowy koncert: $ARTIST" -r "Powiadomienia" \
        ktoś@gdzieś.net 


# Po skończonej pracy -- załóż maj... znaczy posprzątaj po sobie ;)
rm $CEL/../audio-$ID*.wav

Spinnen Essen: [url=http://fluxboxpl.org/portal/]FluxboxPL[/url] [url=http://przepis-na-lo.pl/]Przepis na LibreOffice[/url]

Offline

 

#4  2009-11-24 08:48:11

  sidjestgit - Gość

sidjestgit
Gość

Re: konsola nagrywanie radia

streamripper
uruchamiasz:
streamripper ip.stacji.radiowej

 

#5  2009-11-24 16:22:53

  paoolo - Oldtimer

paoolo
Oldtimer
Skąd: Kraków
Zarejestrowany: 2006-05-20

Re: konsola nagrywanie radia

genialny skrypt :P jeszcze pod Państwową Wolną Komercyjną Stację, która wie co dobre ;)

Offline

 

#6  2009-11-30 18:56:12

  mihoo_koz - Użytkownik

mihoo_koz
Użytkownik
Zarejestrowany: 2006-09-27

Re: konsola nagrywanie radia

a jak nagrać taki strumien
http://www.polskieradio.pl/sluchaj/play.aspx?p=r4

Offline

 

#7  2009-11-30 19:02:16

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: konsola nagrywanie radia

[quote=mihoo_koz]a jak nagrać taki strumien
http://www.polskieradio.pl/sluchaj/play.aspx?p=r4[/quote]
osadzony jest tam plik o takiej treści

Kod:

<asx version = "3.0">
  <entry>
    <ref href = "mms://stream.polskieradio.pl/program4"/>
    <ref href = "rtsp://stream.polskieradio.pl/program4"/>
    <ref href = "http://stream.polskieradio.pl/program4"/>
  <Title>Polskie Radio BIS</Title>
  <Author>Polskie Radio SA</Author>
  <Copyright>Polskie Radio SA</Copyright>
  <Banner></Banner>
  </entry>
  <Title>Polskie Radio BIS</Title>
  <Author>Polskie Radio SA</Author>
  <Copyright>Polskie Radio SA</Copyright>
  <Banner></Banner>
  <LogURL href = ""/>
</asx>

teraz chyba oczywiste jak nagrać


Błogosławieni, którzy czynią FAQ.
[url=http://www.opencaching.pl]opencaching[/url] :: [url=http://dug.net.pl/sources.list]debian sources.list[/url] :: [url=http://www.linuxportal.pl/blogi/azhag/wpisy]coś jakby blog[/url] :: [url=http://dug.net.pl/]polski portal debiana[/url] :: linux user #403712

Offline

 

#8  2012-03-08 17:40:51

  ryszard_kot - Użytkownik

ryszard_kot
Użytkownik
Skąd: z lasu...
Zarejestrowany: 2012-03-08

Re: konsola nagrywanie radia

Cześć.
Mam taki problem z powyższym skryptem, że podczas działania proces mplayera dopełnia zużycie procesora do 100% i to niezależnie czy w debianie stabilnym czy testowym.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.010 seconds, 12 queries executed ]

Informacje debugowania

Time (s) Query
0.00011 SET CHARSET latin2
0.00005 SET NAMES latin2
0.00097 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.138.126.124' WHERE u.id=1
0.00107 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.138.126.124', 1732358936)
0.00054 SELECT * FROM punbb_online WHERE logged<1732358636
0.00070 DELETE FROM punbb_online WHERE ident='3.133.108.172'
0.00067 SELECT topic_id FROM punbb_posts WHERE id=134628
0.00008 SELECT id FROM punbb_posts WHERE topic_id=15576 ORDER BY posted
0.00080 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=15576 AND t.moved_to IS NULL
0.00006 SELECT search_for, replace_with FROM punbb_censoring
0.00228 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=15576 ORDER BY p.id LIMIT 0,25
0.00095 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=15576
Total query time: 0.00828 s