Instruktaż/Tutorial Nagrywanie streaming'u wma i acc na TS-219P II

jdebs

Passing Basics
Beginner
22 Styczeń 2012
14
1
3
Witam,
czy zna ktoś alternatywę dla streamrippera, która jest w stanie nagrać streaming wma lub/i acc?

Pozdrawiam,
 
Niestety muszę odpowiedzieć sobie sam. Popularną "Trójkę" jak i inne programy Polskiego radia nadawane w wma udało mi się nagrać za pomocą MPlayera. Niestety nie jest on standardowo dostępny w pakietach na QNAPie więc należy go sobie zainstalować. Jak, jest opisane tutaj: https://forum.qnap.net.pl/viewtopic.php?f=39&t=1844

Po instalacji napisałem skrypt który jest wywoływany z crona. Skrypt wygląda tak:
Bash:
#!/bin/bash
#####################################################################
# This is the script for recoridng radio station from internet      #
# The stream is captured to the wma file. Later converted to wav,   #
# and lately to mp3.                               #
#                                            #
# Witten by: jdebs                                                  #
# Date: 10.02.2012                                 #
#####################################################################

Stream="http://stream.polskieradio.pl/program3"
Record_file_wma="/share/MD0_DATA/Public/audycja_`date +%Y%m%d`.wma"
Record_file_wav="/share/MD0_DATA/Public/audycja_`date +%Y%m%d`.wav"
Record_file_mp3="/share/MD0_DATA/Public/audycja_`date +%Y%m%d`.mp3"

#Setup record time: 2h 2min
Record_time=7320

echo -e "===============================================================" 
echo -e "         Record time: `date`"
echo -e "===============================================================\n\r" 

# please notice at the end of mplayer command there is "&" sign. This switchs mplayer to the
# background and lets bash continue to the next raw -> sleep
# notice also that i placed direct path to executable. the parth could be checked using which command

/usr/local/bin/mplayer -cache 256 -dumpstream $Stream -dumpfile $Record_file_wma &
sleep $Record_time

#Get a process ID of MPlayer
PID="pidof mplayer"
echo -e "The Process ID of mplayer process is: `$PID`. Process is going to be killed...\n\r"

#Streaming to the file could be stopped only by killing the process...

killall -9 mplayer
echo -e "Time elypsed. Mplayer closed. Rrecording finished at `date +%T`\n\r"
echo -e "Wait 5 sec ... for file conversion\n\r"
sleep 5

echo -e "***************************************************************"
echo -e "Convert from wma to wav: 44100 Hz, stereo, s16, 1411 kb/s"
echo -e "***************************************************************"

/usr/bin/ffmpeg -i $Record_file_wma -vn -acodec pcm_s16le -ar 44100 -ac 2 $Record_file_wav

#Delete the wma file
rm $Record_file_wma

echo -e "Wait 5 sec ... for file conversion\n\r"
sleep 5

echo -e "***************************************************************"
echo -e "Convert from wav to mp3"
echo -e "***************************************************************\n\r"

/opt/bin/lame -h $Record_file_wav $Record_file_mp3

#Delete the wav file
rm $Record_file_wav
echo -e "\n\r"
echo -e "DOWNLOAD AND CONVERSION COMPLETED at `date +%T` !!!\n\r"
echo -e "===============================================================\n\r"

Tak po krótce działa:
1. Streamuje/zapisuje do pliku WMA nadawaną audycję
2. Dekompresuje do pliku WAV z jakością CD: 44100 Hz, stereo, s16, 1411 kb/s"
3. Po kompresji kasuje WMA
4. Kompresuje do mp3
5. Kasuje WAV

Zalety:
1. Zachowana jakość. WMA jest Windowsowym formatem już skompresowanego dźwięku. Kompresowanie do mp3 od razu wiązało by się z utratą jakości.

Wady:
1. Przy długich nagraniach konwersja zajmuje dużo czasu i obciąża procesor do prawie 100%
2. Przy długich nagraniach wymagana jest duża ilość miejsca na pliki. Przykład: plik WMA po nagraniu 1h audycji ma ok 50MB. Rekompresja do WAV zwiększa rozmiar pliku do ponad 650MB. Dlatego po każdorazowej kompresji kasuje plik.

Założenia działania skryptu:
1. Zainstalowany enkodery ffmpeg i lame.
2. mplayer uruchomiony ze znakiem & na końcu - praca w tle. Możliwość przejścia do następnej komendy -sleep
3. Podane są pełne ścieżki do programów ffmpeg, lame i mplayer. Mozna sprawdzić istalacje używając komendy which <nazwa programu>
Przykład:
Bash:
which mplayer
/usr/local/bin/mplayer

Przykład z crontab:
Kod:
0 22 * * 1 /share/Recordings/skript.sh 2>&1 | tee /share/Public/IPRadio/Polskie_Radio_Program_3/log_`date +%Y%m%d`.txt

Inne uwagi:
1. Streamowanie w Mplayer nie może zostać zakończone komendą z lini poleceń. Zatem trzeba go "ubić". Słowo jak i metoda nie ładna, może ktoś ma inny pomysł?
2. Nadal uważam że ten program to "armata na muchę" ale inne metody (mimms, vlc, streamripper) w moim przypadku zawiodły. Jesli komuśzadziała z MiMMS, który jest dostarczany z ipkg to proszę dać znać.
3. Nie wiem dlaczego przyporządkowanie zmiennej
mplayer="/usr/local/bin/mplayer" i pózniejsze jej wykorzystanie jako mplayer -cache 256 -dumpstream $Stream -dumpfile $Record_file_wma & nie działa po restarcie systemu -> odpowiedź mile widziana.
4. Jak sobie przypomnę to dodam...



Wszelkie uwagi, komentarze usprawnienie skryptu mile widziane...
Miłego słuchania równiez streamów nie windowsowego formatu.
Jacek
 
Ostatnio edytowane przez moderatora: