らじる★らじる NHKネットラジオを録音する 2017年9月

9 月の 2 週目あたりになってらじる★らじるが録音できなくなっていたので調べてみました。

環境

  • Mac バージョン 10.12.6(16G29)
  • ffmpeg version 3.3.3

地域別の URL

次のコマンドで地域別の URL が調べられるようです。 v170809 となっているので、8 月 9 日あたりには変わっていたのでしょうか。

curl 'http://www.nhk.or.jp/radio/config/config_web.xml?v170809' \
-XGET \
-H 'Referer: http://www.nhk.or.jp/radio/player/?ch=fm' \
-H 'If-None-Match: "c67605-10d2-5584bf97c07f2"' \
-H 'Accept: application/xml, text/xml, */*; q=0.01' \
-H 'Cache-Control: max-age=0' \
-H 'If-Modified-Since: Sun, 03 Sep 2017 17:03:35 GMT' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8' \
-H 'X-Requested-With: XMLHttpRequest'

結果は次のようになっています。 東京の地域以外は省略しています。

<data>
  <areajp>東京</areajp>
  <area>tokyo</area>
  <apikey>001</apikey>
  <areakey>130</areakey>

  <r1hls><![CDATA[https://nhkradioakr1-i.akamaihd.net/hls/live/511633/1-r1/1-r1-01.m3u8]]></r1hls>
  <r2hls><![CDATA[https://nhkradioakr2-i.akamaihd.net/hls/live/511929/1-r2/1-r2-01.m3u8]]></r2hls>
  <fmhls><![CDATA[https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-01.m3u8]]></fmhls>

</data>

ラジオ第1、ラジオ第2、NHK-FM(東京)の URL があって、以前と変わっているようです。 拡張子が m3u8 になっていますので、HTTP Live Streaming (HLS) に対応したようです。

m3u8

NHK-FM(東京)にアクセスしてみます。

curl 'https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-01.m3u8'

結果は次のようになっています。

#EXTM3U
#EXT-X-VERSION:2
#EXT-X-TARGETDURATION:11
#EXT-X-MEDIA-SEQUENCE:57110
#EXTINF:10,
1-fm-20170831T143716-01-28/1110.ts
#EXTINF:10,
1-fm-20170831T143716-01-28/1111.ts
#EXTINF:10,
1-fm-20170831T143716-01-28/1112.ts

# ...略...

#EXTINF:10,
1-fm-20170831T143716-01-28/1127.ts

何度かアクセスしてみましたが、含まれている .ts ファイルの URL の数は 16 の固定になっていて、動的に変わっていくように見えました。

録音

録音するのに ffmpeg を使いました。 ffmpeg のインストールは FLVファイルからAACファイルを抽出する の記事を参考にしてください。

ffmpeg -i 'https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-01.m3u8' -t 60 -c copy 1-fm-01.ts

-t で録音する時間(秒)を指定します。 ここでは 60 秒録音してみました。 1-fm-01.ts の名前でファイルが作成されます。 拡張子を .ts にするより .m4a にした方が iTunes でも聞くことができるので良いかもしれません。

自分の環境では 35~45 秒程度遅延して録音されました。 少し前後に余裕を持って録音した方が良いかもしれません。

Gist のソース

Gist にソースをアップしてみました。

終わり

HTTP Live Streaming (HLS) の形式になって、Radiko.jp と同じようにタイムフリーになりつつある印象を受けました。 まだ 1 週間は無理かもしれないですけれども、数時間くらいならタイムフリー的に後から録音することができそうでした。

開始する付近の ts ファイルの名前が把握できたらその付近のファイルを連番でダウンロードすればいいのかな。

curl -O 'https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-20170831T143716-01-28/[0-100].ts'

T143716-01-30 の部分が日付を表しているのかどうかわからないですけど、何度か試していたところでは次のように 2000 のサイクルになっているように見えました。

#EXTINF:10,
1-fm-20170831T143716-01-30/1999.ts
#EXTINF:10,
1-fm-20170831T143716-01-31/0.ts

次のように T143715-01-40 と、40 までなっているため、99 まできたら次は 02-01 になりそうかな。

#EXTINF:10,
1-r2-20170831T143715-01-40/1501.ts

18 September 2017 追記

終わりのところに書いていた連番のダウンロードは、何か判断しているように見えました。 Safari のキャッシュをクリアした状態でダウンロードすると、次のようになってしまいました。

File not found.”

Safari から “らじる★らじる NHKネットラジオ” にアクセスして一度リアルタイムの音を聞いてからダウンロードするとファイルがダウンロードできました。