地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

ラジオ録音

 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で録音する環境構築

qiita.com

 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にアップロードしたいので環境構築

deviceplus.jp

 こちらを参考に設定。

  より詳しくは

github.com

 を参照。

 なお、同スクリプト中、設定ファイルは明らかになるよう以下に書き換え。

#Default configuration file
CONFIG_FILE=/home/pi/.dropbox_uploader 

  (意味無いかもしれないけれども、トラブルは減る?)

シェルスクリプト

engineermemo.seesaa.net

 

最新:HLS版らじるらじるをラズベリーパイで録音する - LinuxやGadgetが好き

 

 以上の2つのサイトを参考に継ぎ接ぎしてスクリプト作成。感謝。

  corn で実行させたいので絶対パスで記述。相対パスでやっててハマりました・・。

 

#!/bin/bash
DATE=`date'+%Y%m%d_%H%M'`
TMPDIR="/tmp"
OUTDIR="/home/pi/NHK/radio"
if[ $# -eq 2 ]; then
CHANNEL="$1"
DURATION=`expr$2 \* 60`
else
echo"usage : $0 channel_name(r1|r2|fm) duration(minuites)"
exit1
fi
case$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 ]; then
rm-f "${TMPDIR}/${CHANNEL}_${DATE}.ts"
fi
if[ $? = 0 ]; then
bash/home/pi/NHK/dropbox_uploader.sh upload "${OUTDIR}/${HEAD}${CHANNEL}_${DATE}.mp3"""
if[ $? = 0 ]; then
rm-f "${OUTDIR}/${HEAD}${CHANNEL}_${DATE}.mp3"
fi
fi 

cronでうまくいかない時

cronでの実行の場合、エラーをメールで送信しようとするためpostfixなしの状態では、エラーとなって実行できない場合があります。そこで、

Raspberry Piでcronを使用し定期的にスクリプトを実行する|wizqro.net

を参考に

sudo apt-get install -y postfix

でインストールします。

 

無事に完成

 テスト運用して無事に動作確認終わり。さほどCPU負荷も高くもなさそうなのでラズパイでも問題なさそう。

 時間1分前から録音出来るように crontab にて実行登録して終了。

 

 

*1:受信料払ってます