UbuntuでRadikoの録音をできるようにする

Linux
この記事は約7分で読めます。

埼玉に住むようになってからNACK5のラジオ番組を聞くようになりました。

ラジオ番組を録音するために、現在はHP Compaq 8200 Elite USを自動起動/自動シャットダウンする設定にしていますが、ラジオ番組の録音のためだけにこのパソコンを起動するのは無駄が多く、コロナ禍による在宅勤務の増加も相まって不経済です。

それならば、Syslogサーバーとして常時起動しているNP15で、ラジオ番組の録音をすればよくね?と思ったので、設定をしてみました。

                 

録音したい番組

埼玉県民まるだしのラインナップです。

環境

 

必要なパッケージのインストール

radikoで録音するために必要なパッケージをインストールしておきます。

$ sudo apt-get install rtmpdump libxml2-utils ffmpeg libavcodec-extra

 

他の方のブログではswftoolsのインストールも必要と書いてありましたが、swftoolsはインストールしなくても録音できました。

 

radiko録音スクリプトの準備~テスト録音

radikoの録音ができるスクリプトをGithubに公開されている方がいるので、そちらを利用させていただきます。感謝。

git clone https://gist.github.com/3956266.git rec_radiko

 

rec_radikoに移動して、rec_radiko.shに実行権限を付与します。

cd rec_radiko
chmod 755 rec_radiko.sh

 

以上でひとまず録音準備は完了です。

 

さっそく録音してみます。

./rec_radiko.sh NACK5 1

↑はNACK5を1分録音するという意味です。

1分後、rec_radiko.shと同じディレクトリ内に.mp3ファイルが作成されて、録音されていることを確認します。

ちなみに第1引数はラジオ局の指定です。

指定できるラジオ局は、radikoのページにあるラジオ局のURLで確認できます。

NACK5の場合、URLは『https://radiko.jp/#!/live/NACK5』なので、NACK5が引数です。

文化放送であれば、QRRといった具合です。

スクリプトの修正

テスト録音で作成されたファイルはこんな感じでした↓
NACK5_2021-05-02-09_37.mp3

ファイルの作成場所と録音ファイル名を自分の好みに合うようにスクリプトを修正します。

 

スクリプトのバックアップ

念のためです。

cp -p rec_radiko.sh rec_radiko.sh.back

 

日付形式の変更

ファイル名に付与される日付の形式を変更します。

スクリプトの6行目を変更します。

変更前:date=`date '+%Y-%m-%d-%H_%M'`

変更後:date=`date '+%Y%m%d'`

ハイフン(-)と時間と分を取り除きました。

 

録音ファイルの保存先変更

使用するスクリプトは、rec_radiko.shと同じディレクトリに録音ファイルが保存されます。

録音ファイル専用のディレクトリにファイルが保存されるようにします。

変更前:outdir="."

変更後:outdir="/home/np15/radiko"

 

録音ファイル名の変更

テスト録音では、”NACK5″と”1″という引数を使いました。

引数に録音したい番組のタイトル名を追加し、ファイル名に使えるようにしました。

変更箇所は2か所です。 まずは1か所目(19~21行目)

変更前:
if [ $# -ge 3 ]; then
  outdir=$3
fi

変更後:
if [ $# -ge 3 ]; then
  title=$3
fi

2か所目(121行目)

変更前:
ffmpeg -loglevel quiet -y -i "/tmp/${channel}_${date}.m4a" -acodec libmp3lame -ab 128k "${outdir}/${PREFIX}_${date}.mp3"

変更後:
ffmpeg -loglevel quiet -y -i "/tmp/${channel}_${date}.m4a" -acodec libmp3lame -ab 128k "${outdir}/${PREFIX}_${title}_${date}.mp3"

これで3つ目の引数に番組名を使うことで、ファイル名に番組名が入るようになりました。

こんなかんじです↓

# スクリプト実行例
./rec_radiko.sh NACK5 240 GOGOMONZ

# 保存されたファイル名
NACK5_GOGOMONZ_20210503.mp3

ログの保存

なにかトラブルが発生したときにログを見返したいです。

スクリプトの実行ログをとれるようにします。

変更前:
#!/bin/bash

変更後:
#!/bin/bash -xv

# ログ記録
echo   "/home/np15/LOG/LOG.$(basename $0).$(date +%Y%m%d).$(date +%H%M%S)" &> /dev/null
exec 2> /home/np15/LOG/LOG.$(basename $0).$(date +%Y%m%d).$(date +%H%M%S)

 

録音のスケジュール設定(Cron設定)

録音したいラジオ番組の開始に合わせてスクリプトが起動するように、cronを設定します。

『GOGOMONZ』と『HITS! THE TOWN』を録画できるように設定します。

sudo crontab -e

GOGOMONZは、毎週月曜日~木曜日の13:00~17:00放送です。

放送開始前1分の余白を付けているので、時間(分)は241としています。

59 12 * * 1,2,3,4 /home/np15/SHELL/radiko/rec_radiko.sh NACK5 241 GOGOMONZ

 

HITS! THE TOWNは、毎週土曜日の12:55~18:00の放送です。

こちらも放送開始前1分の余白を付けているので、時間(分)は306としています。

54 12 * * 6 /home/np15/SHELL/radiko/rec_radiko.sh NACK5 306 'HITS!THE_TOWN'

感想

スクリプトのおかげでとても楽ちんに録音ができるようになりました。

GOGOMONZの月曜日放送分を録音できたことを確認しましたが、気になることが1点。

それは録音終了後のmp3へのエンコード速度です。

NP15はAtom D525という省電力CPUを搭載していますが、処理性能としては低いです。

mp3へのエンコードするためのffmpegのプロセスが、CPU使用率が100%に近い状態で40分くらいかかっていました。

録音したい番組の放送時間が重複していないので今のところは問題なさそうですが、そもそもmp3形式で保存する必要があるのかも含めて考えないといけないかもです。

録音ファイルサイズ大きすぎる問題を解決しました

 

私なりの結論です。

コメント

タイトルとURLをコピーしました