2018年04月24日

ネットブックにUbuntu Server入れる その10 radikoの録音

ネットブックのHP mini 1000にUbuntu Serverを入れて
色々やる流れです。

ネットブックにUbuntu Server入れる

の記事になります。

予定ではMySQL辺りを入れようと思ってたのですが
体調不良で更新に間が空いてしまっているので違う話題で更新します。

内容はLinux(Ubuntu)でradikoの録音です。

ちょっとした事情で4月からのラジオ番組を聞いてるのですが
その時間はラジオを聞くことが出来ず、
またFMラジオを録音する環境は無いわけでは無いけれど面倒だし
最初はスマホでradiko録音をやろうと思ったのです。

アプリの評価を見る限りはそのアプリは問題ないんだろうけど
うちのスマホの省電力が頑張りすぎて正しい動作してくれなかったり
設定した時間に動かないくせに
ラジオ局の放送開始の音を突如流して早朝に叩き起こしてくれたりと
いい加減違う環境でやるわ!!となったのでやったことのまとめです。

最初は軽い気持ちでurl叩けばストリームが拾えると思ってたのですが
radikoは認証やら地域判定やら面倒くさいことをやっていて
とてもじゃないけど仕様調べてradiko受信スクリプト書くなんてやりたくない。

と言うことで検索したら
こちで録音用スクリプトを公開してくださっていたのでありがたく使わせて貰う。

https://gist.github.com/matchy2/3956266

radikoは何年か置きに仕様変更しているようで
それに気づかず日付が書かれてないブログの情報で悩んだりしました。
こちらは頻繁に更新されてるようでしばらく安心。

このスクリプトを動かすのに必要そうなアプリをインストール。
それとmplayerを一緒にインストール

~$ sudo apt install mplayer rtmpdump swftools libxml2-utils ffmpeg

libavcodecも必要なようだけど既にインストールされているか
ffmpegと一緒に入るだろうと言う甘い想定。
もしも実行時にエラーが出る場合は別途入れる。
また作業前にきちんと音が出るかを確認。
内容はスピーカーから音を鳴らすの通り。

追記---------------------------------------------------
情報をきちんとせず曖昧に書くなら意味ないでしょって気づいたので
libavcodecのどれが入ってるかを確認した(2018/04/25)
~$ dpkg -l | grep libavcodec
ii libavcodec57:i386 7:3.3.4-2 i386 FFmpeg library with de/encoders for audio/video codecs - runtime files

インストールされていたのはlibavcodec57
ネットブックで32bitのためi386版
-------------------------------------------------------



radiko用ディレクトリの作成
~$ mkdir radiko

カレントディレクトリを移動して
~$ cd radiko

次に先ほどの録音用スクリプトをダウンロードする。
スクリプトの右上のrawボタン押したurl

~$ wget https://gist.githubusercontent.com/matchy2/3956266/raw/371be42108ea0c4a96c488f36a44b98deb17008f/rec_radiko.sh

落としたスクリプトに実行許可を出す。

~$ chmod +x rec_radiko.sh

それと録音用スクリプトをちょっと弄って確認で直接聞けるようにする

~$ cp rec_radiko.sh play_radiko.sh
~$ vi play_radiko.sh

ファイルの最後のほうのこの部分をコメントアウト(削除でも可)する

     --flv "/tmp/${channel}_${date}"

ffmpeg -loglevel quiet -y -i "/tmp/${channel}_${date}" -acodec libmp3lame -ab 128k "${outdir}/${PREFIX}_${date}.mp3"
if [ $? = 0 ]; then
rm -f "/tmp/${channel}_${date}"
fi

そして削除部分の直前の --stopの後に | mplayer -をつけてmplayで聞けるように修正
    --stop ${DURATION} \
    | mplayer -

修正点を差分風に書いた方が良いのか悩む
そして実行、TBSを10分視聴する。
~/radiko$ ./play_radiko.sh TBS 10

問題無く鳴った。
radikoは地域によって視聴局が変わるので
現在の地域をここで確認。
https://radiko.jp/contact3

またチャンネル名一覧はここ
http://www.dcc-jpl.com/foltia/wiki/radikomemo

radikoのWebページ開いて放送ページのurlの最後のIDを見ても良い
NACK5の場合は
http://radiko.jp/#!/live/NACK5
となり、最後のNACK5がIDでコマンド入力に使う、最後の数字は時間

次は本命の録音になる。
まずmp3のエンコード後の出力ディレクトリを指定する。
(デフォルトかカレントディレクトリ)
Windows機から楽に触れるようにsanmaのディレクトリを指定

~$ vi play_radiko.sh

11行目の
outdir="."

outdir="/home/USER/samba_share"

に修正して保存、録音を実行する

~/radiko$ ./rec_radiko.sh TBS 10

出力ファイルはTBS_2018-04-24-18_41.mp3のように
チャンネル名+録音開始時間のmp3で作られた。

1分辺り915kb程度のサイズ
このサイズならば60分番組でも問題無い。

録音時の一時ファイルは/tmpに作られ
1分辺り365kb程度だった。
ファイル名は上記mp3と同じで拡張子無し。

後はこのスクリプトをcronに登録して
ラジオの放送時間に録音すれば良い。

~$ crontab -e
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed

Choose 1-4 [1]: 2

今のcrontab起動の初回はこんなのが出るんだ…vimを選択
毎週金曜にTBSを12時から録音するとして
ネットブックが遅いからスクリプトの起動時間のロスを考えて
1分前から60分録音だとこんな感じかな?

# m h dom mon dow command
59 11 * * 5 /home/eclair/radiko/rec_radiko.sh TBS 61

保存してcrontab -lで確認

現在の設定だと問題があった時にメールが飛んでこないから
後でpostfixでも入れて設定しないとかな?

備考:
 試験的に少し前に60分録音したTBS_2018-04-24-18_41(21.4MB)ですが
 ネットブックでは録音後の50分経ってもまだmp3へのエンコードが終わってません。

 頻繁に録音する場合は録音スクリプトのエンコード部分をコメントアウトして
 別の早いパソコンでエンコードする方が確実に楽だと思われます。
 スクリプトと同じコマンドでのエンコード時間はcore i7 3770で2分程度
 (ファイルサイズは54.9MB)

追記
 余りにおかしいのでエンコードをやり直したら12分でエンコードが終わりました。
 スクリプトによるmp3エンコードしないでデータを/tmp以外に置いておこうかなぁ



タグ:uBuntu
posted by えくれあ at 20:52| Comment(0) | TrackBack(0) | 技術
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/183071664
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック