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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
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
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:
#!/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
Offline
streamripper
uruchamiasz:
streamripper ip.stacji.radiowej
genialny skrypt :P jeszcze pod Państwową Wolną Komercyjną Stację, która wie co dobre ;)
Offline
a jak nagrać taki strumien
http://www.polskieradio.pl/sluchaj/play.aspx?p=r4
Offline
mihoo_koz napisał(-a):
a jak nagrać taki strumien
http://www.polskieradio.pl/sluchaj/play.aspx?p=r4
osadzony jest tam plik o takiej treści
<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ć
Offline
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