2018年5月現在コマンドライン環境でHLS(HTTP Live Streaming).m3u8形式の配信をパッケージアプリケーションで簡単に受信する方法をメモします。2018年3月でradikoでの配信実験が一旦終了し12日後に再編再開されました。中断期間もありましたし、今の配信実験も期間が定まっているため本家サービス側m3u8への対応の手順です。より各種リソースやナレッジが豊富なIAマシンやDebian/Ubuntu等OSでも同様にvlc/ffmpegで動作すると思います。
インタラクティブに再生だけかプロセス間通信とかできるならdefaultインストールされているomxplayerで再生できますが、ストリームメディアの場合止めない限り止まらないのです。難しいことせずに止まるプレーヤー探しました。
##環境
-Raspberry Pi
-Raspbian jessie / stretch GUI無し
-スピーカー
#リアルタイム再生
vlcのコマンドライン版でvlcに画面出力無しのオプションをつけたエイリアスのcvlcを使います。vlcのパッケージにcvlcも入っています。vlcが入っていない場合はapt-getでインストールします。jessieではupdateしてから、
stretchは定期自動updateだと思うのでupdateは任意で。
sudo apt-get update
sudo apt-get -y install vlc
###再生実行方法
cvlc <m3u4のURL>
らじるらじるのURLはhttp://www.nhk.or.jp/radio/config/config_web.xmlにあります。
視聴時間を指定する場合
cvlc --run-time <秒> <m3u4のURL>
これだけだとcvlcの再生が停止するだけでcvlcは終了しません。
cvlc --run-time <秒> <m3u4のURL> vlc://quit
vlc://quitをつけるとcvlcが終了します。cron実行で目覚ましや学習にどうぞ。
結構カラフルなwarnやerrorが出ます、気になる場合--quiet
で抑制してください。
#録音
こちらを参照させていただきました。
らじるらじる m3u8 を ffmpeg で録音する(8放送局)2017/9 以降対応
Raspbian stretchの場合は各種エンコーダ、デコーダをサポートしたパッケージがリポジトリにありましたのでffmpegをインストールします。
sudo apt-get -y install ffmpeg
###録音実行方法
使い方についても上記サイトどおりで、録音時間を秒で設定します。
ffmpeg -i <m3u4のURL> -t <秒> -c copy <m4a出力ファイル名>
こちらもcronでスケジュールが可能ですね。
###Raspbian jessieの場合
Raspbian jessieのリポジトリにはffmpegのパッケージが無いようです。ソースからビルドする必要があります。以下のサイトの全自動スクリプトがRaspberry Piでも動作しました。こちらを利用させていただきます。
自分に負けないラボラトリー LinuxでFFmpegをほぼ全自動でビルドする(CentOS、Ubuntu等に対応)
説明には
64bit版(amd64)のLinux OSで実行して下さい。32bit版(i386)ではビルドに失敗します。
と記載ありましたが、ARM32のRaspbianでもだいたい動作しました。一点、x265の途中で止まってしまいました。
Umbrella RaspberryPi Pi3でlibx265 リベンジ
こちらのサイトのCMakeListsの修正点を反映させると通ります。しかしながら、H.265エンコードは非力なRaspberry Piでは途方もなく時間がかかり実用的ではないので、全自動ビルドスクリプトでenable_h265=0
として無効にしたほうがよいともいます。
この全自動ビルドスクリプトのままではhttpsのm3u8が取得できないので全自動ビルドスクリプトの最後のほうの./configureに --enable-openssl \
を追加します。
sudo apt-get install libssl-dev
でsslのライブラリを追加した後全自動スクリプトを実行するか手動でmake install
まで動かせば当初の目的のm3u8受信録音可能なffmpegが完成します。この全自動スクリプトでは専用の場所にインストールされるので使い方に記載のPATHを通しておいてください。
ちなみに、本家Raspberry PiサイトからMPEG2ハードウェアライセンス(£2.40)を買って、起動ファイルに設定したうえでRaspbian stretchのパッケージのffmpegやビルド時に--enable-mmal --enable-omx --enable-omx-rpi
が追加されたffmpegではRaspberry Pi 3でもHD動画のリアルタイムデコード+エンコードが一応可能でした。
##注意
環境にもよると思いますが、らじるらじる は感覚的にはradikoよりさらに遅延しているようです。私の場合ラジオ波と比べて1分ぐらいは遅れている感じです。お尻が切れないように余裕持たせてください。
##参照
GitHubGist riocampos らじるらじる m3u8 を ffmpeg で録音する(8放送局)2017/9 以降対応
自分に負けないラボラトリー LinuxでFFmpegをほぼ全自動でビルドする(CentOS、Ubuntu等に対応)