15 ネットラジオの録音 -- 前番組の延長にどう対応するか

ラジオ人間だったせいで、ネットラジオなどを聴いている・録音している、 ということを

「ネットラジオを聴く・録音する (streamlink, ffmpeg)」
に書いた。

毎週聴く番組の録音はずっとうまく行っていたのだけれど、 前番組にスポーツ中継が入り、それが延長することが生じて、 うまく録音できないことがこのところ2回ほど生じた。

なんか、20世紀のエアチェックで悩んだことの再現みたいな感じだ (笑)。

さてどうしよう。

最初は録音時間を長めにしておいて、後から不要な部分をカットして聴こう、 と考えたのだけど、どうも番組が終了すると、それを示す信号が出るようで、 ちょうどスポーツ中継が終わるところで録音が終わってしまうみたい。

うーむ。

こういう詳しくないことで困ったときは、ChatGPT に尋ねてみる。

ChatGPT は、いくつか対処策の選択肢をあげてくれた。 そのうち有望そうなものは

(a)
ffmpeg の再試行を使って再接続を試みる(失敗するかもしれない)
(b)
ffmpeg をループ録音して複数セッションに分割保存
(c)
streamlink を使って再接続つきで録音

(b) と (c) を勧められた。さあ、どうしよう。

(b) はわかるけれど (5分単位くらいに分割するのかな?…それとも1分単位?)、 ぶつ切りになっているものを後からまとめるのはなんか抵抗があるな。

そもそも、最初のうちは streamlink を使っていたのだった (データ・フォーマットの変換には ffmpeg を使う)。 後から ffmpeg だけで済むことがわかったので、 シンプルに ffmpeg でやるようにしたのだけど、 特に streamlink を採用することに抵抗はない。 (c) をするには
streamlink --hls-duration 01:00:00 --retry-streams 5 --retry-open 10 --output myradio.ts "$URL" best
ffmpeg -i myradio.ts $FNAME
とするとか。これで、 --hls-duration 時:分:秒 で指定された長さだけ録音するように (retry つきで) 頑張ってくれるはず。

(a) をするには
ffmpeg -u 3600 -reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 2 -i "$URL" -vn $FNAME
とするとか。

ChatGPT 的には、(b) または (c) がおすすめらしい。 でも (b) はなんかゾッとする (録音もれを少なくするには時間を短くする必要があるけれど、 そうすると多数の中間ファイルが出来るわけだ)。

(a) または (c) で行こう。 さて、どちらを採用するか?やはり両方実験するものだろう。

FMチューナーとテープ・デッキを使ったエアチェックの時代と違って、 コンピューターが複数台あるのは普通の時代なので、 来週は従来のスクリプト (前番組の延長がなければほぼ確実に動く)と、 ffmpeg でリトライするのと、streamlink でリトライするのと、 3通りを試してみよう。

休日の暇つぶしネタでした。

(続く)

来週はスポーツ中継がないのか…実際的なチェックは先になるね。

(2025/7/22) 先週末はスポーツ中継で、無事チェックすることになった。
streamlink --hls-duration 01:00:00 --retry-streams 5 --retry-open 10 --output myradio.ts ${URL}
で無事1時間の録音が出来た。 .aac 形式にするのは簡単(というか一瞬で)で
ffmpeg -i myradio.ts -vn -acodec copy なんとか.aac
.mp3 形式にするには (少し時間を要するがコマンド自体は簡単で)
ffmpeg -i myradio.ts なんとか.mp3

もっとも、今回はスポーツ中継部分を削らないといけないので、 どこからどれくらいを切り取るか指定しないといけない。 このやり方は以前から知っている。
ffmpeg -i 入力ファイル名 -ss 最初の時刻 -t 継続時間 -c copy 出力ファイル名
ffmpeg -i 入力ファイル名 -ss 最初の時刻 -to 最後の時刻 -c copy 出力ファイル名
開始15分から、30分切り取るには
ffmpeg -i myradio.ts -ss 15:00 -t 30:00 -vn -acodec copy なんとか.aac
あるいは
ffmpeg -i myradio.ts -ss 15:00 -to 45:00 -vn -acodec copy なんとか.aac

.mp3 にするには -vn -acodec copy なんとか.aac ではなく、 単に なんとか.mp3 にすれば良い。


一方
ffmpeg -to 3600 -reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 2 -i "$URL" -vn $FNAME
でも無事録音できた。この切り取りは
ffmpeg -i 入力ファイル名 -ss 15:00 -t 30:00 出力ファイル名
とするのか。


さて、今後はどうしようかな。 なんとなくフォーマットは mp3 を使って来たけれど、aac でやるべきなのか。 Apple 純正の “ミュージック” って aac 再生してくれないのか? (.mp3 をダブルクリックしたら “ミュージック” が起動したので、 使っているのだけど、特に “ミュージック” に思い入れはないので、 何か便利なものがあれば乗り換えても構わない。)


何はともあれスポーツ中継の延長があっても大丈夫になったので、 録音手段探しはとりあえず一件落着。



桂田 祐史