NHK*1ラジオ講座でお勉強したいと思い立つ。Raspberry Piで録音してDropboxにアップロードすれば時間に囚われずに聞けるということで挑戦。
動作:
録音した後、mp3に変換。
Dropboxにアップロードしてファイルは消去。
構成:
/home/pi/NHK 以下に環境構築
/home/pi/NHK/radio/ 以下にmp3ファイル一時置き
OS:
Raspbian GNU/Linux 8.0 (jessie)Release: 8.0 Codename: jessie
Linux raspberrypi 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux
ffmpegで録音する環境構築
rtmpdumpはもう対応してないのでinstallはしない。
codec は lame と fdk-aac をインストール。
ffmpegは configure で試行錯誤して
./configure --prefix=/usr/local --enable-libmp3lame --enable-openssl --enable-omx-rpi --enable-mmal --enable-libfdk-aac
終わったらようやくmake。
make -j4
コンパイル中は結構な負荷でラズパイがあっちち。ヒートシンクが活躍したようです。気になるなら -j2 くらいでのんびりやるのも手ですね。
sudo make install
で、ffmpeg インストール完了。
Dropboxにアップロードしたいので環境構築
こちらを参考に設定。
より詳しくは
を参照。
なお、同スクリプト中、設定ファイルは明らかになるよう以下に書き換え。
#Default configuration file
CONFIG_FILE=/home/pi/.dropbox_uploader
(意味無いかもしれないけれども、トラブルは減る?)
シェルスクリプト
最新:HLS版らじるらじるをラズベリーパイで録音する - LinuxやGadgetが好き
以上の2つのサイトを参考に継ぎ接ぎしてスクリプト作成。感謝。
corn で実行させたいので絶対パスで記述。相対パスでやっててハマりました・・。
#!/bin/bashDATE=`date'+%Y%m%d_%H%M'`TMPDIR="/tmp"OUTDIR="/home/pi/NHK/radio"if[ $# -eq 2 ]; thenCHANNEL="$1"DURATION=`expr$2 \* 60`elseecho"usage : $0 channel_name(r1|r2|fm) duration(minuites)"exit1ficase$CHANNEL in*) exit1 ;;esac/usr/local/bin/ffmpeg-i "${PLAYPATH}"\-t "${DURATION}"\-y -acodec copy "${TMPDIR}/${CHANNEL}_${DATE}.ts"/usr/local/bin/ffmpeg-loglevel quiet -y -i "${TMPDIR}/${CHANNEL}_${DATE}.ts"-acodec libmp3lame -ar 44100 \-metadata album="NHK Radio"-metadata artist="Raspberry Pi"-b:a 128k \"${OUTDIR}/${HEAD}${CHANNEL}_${DATE}.mp3"if[ $? = 0 ]; thenrm-f "${TMPDIR}/${CHANNEL}_${DATE}.ts"fiif[ $? = 0 ]; thenif[ $? = 0 ]; thenrm-f "${OUTDIR}/${HEAD}${CHANNEL}_${DATE}.mp3"fifi
cronでうまくいかない時
cronでの実行の場合、エラーをメールで送信しようとするためpostfixなしの状態では、エラーとなって実行できない場合があります。そこで、
Raspberry Piでcronを使用し定期的にスクリプトを実行する|wizqro.net
を参考に
sudo apt-get install -y postfix
でインストールします。
無事に完成
テスト運用して無事に動作確認終わり。さほどCPU負荷も高くもなさそうなのでラズパイでも問題なさそう。
時間1分前から録音出来るように crontab にて実行登録して終了。
*1:受信料払ってます