diary/Kojima

・NHKの聴き逃しサービス

最近のNHKラジオは「らじる★らじる」経由で録音できると共に、全てではないものの「聴き逃し」サービスとして、 過去の番組も一週間ほどは聞けるようになっている。

「らじる★らじる」のタイマー録音用スクリプトと共に、この「聴き逃し」サービスの録音用スクリプトもffmpegを使うように書いたものの、 最近、FMで配信された番組の聴き逃しサービスがうまく録音できなくなっている。

具体的には、FMの番組を聴き逃しサービスのURLからダウンロードしようとすると、

 Error applying bitstream filters to an output packet for stream #0:0.
     Last message repeated 2 times
 [aac_adtstoasc @ 0x23b07c0] Error parsing ADTS frame header!
 Error applying bitstream filters to an output packet for stream #0:0.
 [aac_adtstoasc @ 0x23b07c0] Input packet too small
 Error applying bitstream filters to an output packet for stream #0:0.
 Last message repeated 1 times
 ....

のようなエラーが多発して、5分ほど録音したところで終了してしまう。 R1やR2の番組だと問題ないようなので、FMの番組をエンコードするする際の仕様が、ffmpeg が想定しているものと違っている気配。 ところがffplay を使ってリアルタイムで再生すると、上記のようなエラーは垂れ流しつつも最後まで再生できるのが謎。

一方、VLCの「メディア」=>「変換/保存」の機能を使うと、gnutlsのハンドシェイクエラーが頻発するものの、 特に問題なくFMの番組も録音できる。しかしながら、VLCの場合、従来使っていたスクリプトみたいに保存先のファイル名とかを 設定できないのでちょっと不便。

ソースコードは見てないけど、聴き逃しサービスは「らじる★らじる」のリアルタイム配信同様、 HLS(HTTP Live Streaming)を使っているので、ffmpeg と VLC で実装に違いがあるのだろうか?

とりあえず興味ある人向けに、手元でイジっている「聴き逃し」サービス録音用スクリプト(get_ondemand3.py)を添付しておく。 使い方は、聴きたい番組のページを開いて、再生ボタンのURLへのリンクを右ボタンクリックでコピー、 javascript:openPlayer('p=0328_01_3804167') みたいなURLが得られるので、このうち 'p=0328_01_3804167' の部分を引数にして、 get_ondemand3.py を起動する。

NHK_01.jpg

とりあえず興味のある人向けに、


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS