NHKのインターネットラジオ「らじる★らじる」をLinux OSのVolumioから無人録音する | 成功法則実践チャレンジ365のその後

成功法則実践チャレンジ365のその後

365日チャレンジのその後、糖質制限や健康のこと、趣味のカメラ・写真、PCオーディオ、ライティング環境のことを書くと思います。

閲覧ありがとうございます。以下はVolumio という音楽再生に特化したLinux配布形式のバージョン1.55を用いてNHKのインターネットラジオを無人録音する方法を書いたものです。筆者は現在その手段と異なる手段で無人録音しております。(2016.4.7)

参照・引用したウェブサイト名を謝辞とともに追記しました(2016.3.20)。

▼NHK FM は音楽の泉
NHK FM放送は音楽の泉。地上波のほかインターネットの「らじる★らじる」というウェブサイトから配信されている。最近らじる★らじるを知り、とてもうれしい(今まで知らなくて残念)。同時期に民放ラジオ+NHKラジオのradikoも知った。radikoについては別途記載予定(簡単には「ホームラジオ」という販売ソフトを利用しているということ)。

▼らじる★らじるの音質はどうなのか
らじる★らじるの音質はどうなのか。高度に音質を追求するのでなければ十分ではなかろうか。筆者は別ページに記載のごとく、ラズベリーパイという名刺サイズのコンピュータ(raspberry pi 2 )に音楽再生用のハードウェア(PiFi DAC+ v2+)を繋げた装置を用い、音楽再生に特化したオペレーションシステム(Volumio version 1.55)で、特段の不満がないステレオ再生を楽しんでいる。お小遣いの範囲内で、ある程度の音質は追求するために少数のハイレゾ音源を入手して試している。それはそれで、ハイレゾを極めなくてもそこそこ十分だぞと思えるハードウェア構成を得たように思う。演奏ソフトのVolumioに大きな不満はない。バリバリのオーディオマニアから見れば不足だらけに違いない。

▼名刺サイズコンピュータでエアチェックしよう
らじる★らじるはそもそもラジオであるから放送時間が決まっている。番組表の通りに時が流れる。筆者は朝から夜まで会社で働く。平日であれ土日祝日であれ連泊の出張が多い。だから番組表を見て、番組を選び、予約録音することになる。このような環境下で録音を予約するにはコンピュータを常時起動しておかねばならない。現行コンピュータの消費電力で常時起動しておくのは電気代が気になる。そこで消費電力が小さいラズベリーパイという小さなコンピュータを用いている。オペレーションシステムは音声ファイルの再生に特化したLinuxのディストリビューション、Volumioである。

Linuxにはcronというタイマーみたいな仕組みがあって、任意の指定時間や定期的な時間を指定して指定した動作(コマンド)を起動することができる。cronを使って録音を予約すれば無人録音が可能になる。そのためには使っているVolumioで1) cronが使えるかの確認と使えないなら使えるようにすること、2) 録音するための指示を整えることだ。

確かめてみた。「エンジニアのつぶやき」というウェブサイトの http://engineermemo.seesaa.net/article/433714757.html を読んで判明した。作者様に感謝です。

1) cron
 ̄ ̄ ̄
なんとVolumioではcronは存在していても機能が止めてあることがわかった。理由と対策を調べた。
/var/www/command/orion_optimize.sh
というファイルの49行目でcronがkillされているのが理由。killを無効にしなければならない。
killall -9 cron
nanoなどのテキストエディタでその行頭に#を入れてファイルを上書きし、再起動すればkillは解除される。
#killall -9 cron

crontab -e から df -h >>log というコマンドを登録した。こうすればコマンドラインに出力される内容がlogというテキストファイルに書き込まれる。cat logで確認してみると次のとおりlogファイルが表示されたので、cronが走ったことが確認できた。
Filesystem      Size  Used Avail Use% Mounted on
rootfs          1.5G  780M  642M  55% /
/dev/root       1.5G  780M  642M  55% /
devtmpfs        484M     0  484M   0% /dev
tmpfs            98M  608K   97M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           256M     0  256M   0% /run/shm
/dev/mmcblk0p1   75M   24M   51M  32% /boot
Ramdisk         256M     0  256M   0% /run/shm
/dev/mmcblk0p4   13G   36M   13G   1% /mnt/SD

ついでに、最下行の /mnt/SD はVolumioを入れているmicro SD の不使用領域を有効にしたディレクトリ。このおかげで外部USB-HDDの電源をOFFにしておいても、13Gもの領域に無人録音で保存できる。三泊四日の出張でもcron任せで多数録音しても余裕がある。あとで大容量のUSB-HDDに転送できる。


2) 録音するための指示
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
インターネットを検索すると現行のらじる★らじるからLinuxで録音できるシェルスクリプトやパイソンスクリプトが見つかった。それらのうちVolumioの中に追加するソフトウェアが少ないものを見出した。 http://engineermemo.seesaa.net/article/433698303.html  に示されている nhk.sh というシェルスクリプトが良い。これまで「エンジニアのつぶやき」というウェブサイトの一ページである。作者様に感謝です。この nhk.sh を利用するならば次の一つのソフトウェアを追加インストールするだけでよいことが分かった。おかげでVolumioの設定上からディスクスペースが不足することなく実行できている(言い換えると、その他のどれかを取り入れると追加するソフトウェアが複数あり、Volumioではディスクスペースが溢れてしまった)。

追加するアプリケーションの導入
apt-get update
をやっておいて、
apt-get install rtmpdump swftools libxml2-utils

紹介した nhk.sh をもらってきて次の通り加工した。----^ から -----$ まで。スクリプトファイル名は nhkflv.sh とした。

変更の目標は第一に番組名(漢字)をファイル名に加えたいことが第一。元のままだとディレクトリのみ指定できファイル名は時刻が自動的に入る。変更ではその後ろに番組名など任意の文言を追記できる。コマンドの第4引数としてインプットできるようにした。第二の変更は、flv形式から汎用形式mp3へのエンコードをせず、らじる★らじるからもらってきたままのflvで保存するということ。Volumioはflvを直接再生できるのだ。スクリプトのうち変換部分を無効にすればよい。元の nhk.sh からの変更点を#のコメント行に追記した。

ここから↓(懐かしいヤビヤック形式の引用)
-----^ nhkflv.sh
#!/bin/bash

#「らじる★らじる」録音スクリプトVolumio用 ryojiyamasaki32@gmail.com 2016.3.13
#オリジナル[url http://engineermemo.seesaa.net/article/433698303.html]に公開されたシェルスクリプトをもらってきて、次の2点を変更した。
#1)保存ファイル名を指定できる。
#2)わざわざmp3に変換せずともflv形式でVoluimioは再生できるからそのままにしておく。

URL="rtmpe://netradio-${1}-flash.nhk.jp"
PLAYURL="http://www3.nhk.or.jp/netradio/files/swf/rtmpe.swf"
DATE=`date '+%Y%m%d_%H%M'`
TMPDIR="/tmp"

#引数を一つ追加する
#if [ $# -eq 2 ]; then
if [ $# -eq 3 ]; then
  CHANNEL="$1"
  DURATION=`expr $2 \* 60`
  OUTDIR="."
#次の1行を追加
  OUTFILE="."
#elif [ $# -eq 3 ]; then
elif [ $# -eq 4 ]; then
  CHANNEL="$1"
  DURATION=`expr $2 \* 60`
  OUTDIR="$3"
#次を追加
  OUTFILE="$4"
else
#  echo "usage : $0 channel_name(r1|r2|fm) duration(minuites) [outputdir]"
#usage表示にファイル名指定を追記
  echo "usage : $0 channel_name(r1|r2|fm) duration(minuites) [outputdir] [outputfile]"
  exit 1
fi

case $CHANNEL in
    r1) PLAYPATH='NetRadio_R1_flash@63346' ;;
    r2) PLAYPATH='NetRadio_R2_flash@63342' ;;
    fm) PLAYPATH='NetRadio_FM_flash@63343' ;;
    *) exit 1 ;;
esac

#ここが録音の本体
rtmpdump --rtmp "${URL}" \
         --playpath "${PLAYPATH}" \
         --app "live" \
         -W "${PLAYURL}" \
         --live \
         --stop "${DURATION}" \
         --flv "${TMPDIR}/${CHANNEL}_${DATE}"

#mp3への変換をしないのでここをコメントアウト
#avconv -y -i "${TMPDIR}/${CHANNEL}_${DATE}" -acodec libmp3lame -ar 44100 \
#  -metadata album="NHK Radio" -metadata artist="Raspberry Pi" \
#  "${OUTDIR}/${CHANNEL}_${DATE}.mp3"

#TMPDIRからOUTDIRに移し、同時に拡張子 .flv を付ける。Volumioからそのまま再生できる
cp "${TMPDIR}/${CHANNEL}_${DATE}" "${OUTDIR}/${CHANNEL}_${DATE}_${OUTFILE}.flv"

if [ $? = 0 ]; then
  rm -f "${TMPDIR}/${CHANNEL}_${DATE}"
fi
-----$
ここまで↑をテキストエディタのNANOなどにコピペして名前を付けて保存。

もし Volumioでご利用の際はSSH接続のうえ、apt-get update と apt-get install rtmpdump swftools libxml2-utils を実行した後に、上記 -----^ から -----$ の範囲をコピペでテキストエディタのnanoなどにとって nhkflv.sh でもよいし、他のお好みのファイル名で保存。そして、
chmod -x nhkflv.sh 
とか
chmod -x 命名したファイル名.sh
で、実行ファイルに変換。

▼録音
crontab -e
と叩けば cron を書き込める状態になる。具体的にはVolumioではテキストエディタの NANO からcronの登録を書き込む状態になる。そこで写真2枚目のように書き込んで NANO を更新保存すると cron が組み込まれる。crontab -l で現在の cron の登録が示される。cron の書き方は google 先生に教わってほしい。

▼cron と nhkflv.sh を用いた録音指示
cronで指示した無人録音の実例。なお、nhkflv.sh の用い方はコマンドラインに次の usage でタイプしてエンターで実行する。それを cron で自動発生しているということ。

nhkflv.sh のコマンド
./nhkflv.sh チャネル名(r1 or r2 or fm) 録音時間(分) [保存先ディレクトリ名] [ファイル名(番組名など)]

cronの実例

その結果、本例では Volumioを納めているmicroSDに作った/mnt/SDというディレクトリに録音ファイルが収まる。次の写真が実例。

▼番組表
次の番組表をチェックすれば cron に予約登録できる。
a) らじる★らじるのウェブサイト
b) FM CLUB(唯一残るNHK FMの番組誌):半年または1年の定期購読

a)のウェブサイトは1週間先までの番組表を見ることができる。b)誌は2週間ごとに発刊される。併用すれば1週間くらいの出張があっても予約できるだろう。

筆者はもうひとつ別の番組表を利用している。冒頭で少しだけ紹介した「ホームラジオ」という製品ソフトである。Linuxのraspberryをベースに、radikoを用いて翌日分までの番組表が表示される。NHKのみならず民放もある。スマホ上で番組表をタップするか、パソコン上でマウスクリックするだけで選んだ番組の録音予約ができる。以上3つの番組表が利用できている。ホームラジオでの録音形式は上記と同じ flv 。ホームラジオはウェブサイトから販売されている製品ソフトである。詳しくは http://www.starstonesoft.com/homeradiohw.htm ご参照されたい。筆者は自分用と家人用の二つのライセンスを購入し家庭内で二つ用いている。なかなか良い。