40 ネットラジオ再び

日付を書くことにしよう: 2026/8/8 (書いているうちに 8/9 になった)。


ようやくお盆休みに入った。明日は停電なので、 研究室の Mac を止める算段をしていて、最後のバックアップ中。


気になっていたことをやっつけるか。


ネットラジオを聴いていて、 “エアチェック” というのも変だな、 ネットチェックというのかしら、よく聴く番組を録音している、 というのを以前書いた。

今年の5月まではそれで上手く行っていたのだけれど、 6月に入ってから上手く行かなくなった。
[https @ 0x9a0c68000] HTTP error 403 Forbidden
[in#0 @ 0x9a0c60000] Error opening input: Server returned 403 Forbidden (access denied)
Error opening input file https://mtist.as.smartstream.ne.jp/30039/livestream/chunklist.m3u8.
Error opening input files: Server returned 403 Forbidden (access denied)

これを復活させよう。

Chappy 君に投げた。御神託は
はい。原因はかなり絞れました。 調布FMのネット配信自体が終了したわけではありません。配信サーバー側が、 直接の m3u8 アクセスに対して Origin ヘッダーを要求するようになったため と考えてよさそうです。

そうなんですね。それでどうすれば良いかと言うと、

これまでは
/opt/local/bin/ffmpeg -to 1860 -i "https://mtist.as.smartstream.ne.jp/30039/livestream/chunklist.m3u8" -vn $FNAME
としていたのを
/opt/local/bin/ffmpeg \
    -headers "Origin: https://listenradio.jp" \
    -i "https://mtist.as.smartstream.ne.jp/30039/livestream/playlist.m3u8" \
    -t 1860 -vn $FNAME
とすれば良いでしょう、とのこと。 -headers "Origin: https://listenradio.jp" をつけるのが大事なところ。

これは単なる推測ではなく、 2026年に公開された ListenRadio 用の録音ツールでも、 まさに mtist.as.smartstream.ne.jp が 403 Forbidden になる問題を、 この Origin ヘッダーを追加することで解決しています。

それ以外に chunlist.m3u8 でなく playlist.m3u8 を指定する、 この方が自然ということでした。

HLSでは playlist.m3u8 が入口となり、 そこから現在有効な下位のプレイリストを取得する形なので、 こちらを指定する方が自然です。 実際、現在公開されている調布FMのストリームURLも playlist.m3u8 になっています。 以前は二段目の chunklist.m3u8 を直接指定する方法も使われていましたが、 FFmpegなら二段階のHLSをそのまま扱えます。

この説明は、実は私にはちんぷんかんぷん。 プレイリストというものを知らないので。 これで学問をやっているわけではないので、結果オーライということにする。


なお、streamlink を使うスクリプトもあって (これも同時期に動かなくなっていた)、 それについても、同様に
/opt/local/bin/streamlink \
    --http-header "Origin=https://listenradio.jp" \
    --stream-segmented-duration 10 \
    --output chofu-test.ts \
    "https://mtist.as.smartstream.ne.jp/30039/livestream/playlist.m3u8" \
    best
と直しましょう、とのことだった。


この改訂で上手く行くかは来週にならないと分からない。


(2026/8/15) 無事録音成功。



桂田 祐史