RadikoPad おまけ機能: Shift + ダウンロード

久しぶりの RadikoPad ネタです。

RadikoPad v1.0.3 紹介記事で少しだけ触れていたのですが、RadikoPad には、Shift + ダウンロードボタンで、番組そのものをダウンロードするのではなく、番組を構成するファイルのURLリストを作成する機能があります。

RadikoPad の機能で満足している人には無用の機能なのですが、Radikoは通信アプリケーションなので、サーバーや通信回線の混雑で、音飛びすることがあります。(正確には、私自身は音飛び未経験で、音飛びしたことがあるという報告をもらっています。)自然界にはノイズが溢れていますから、音飛びも同様に考えて聞き流せばいいだけなのですが、どうしても聞きたい瞬間が途切れたり、今回の番組は完全に保存しておきたいと思っているところに音飛びがあるとガックリしてしまいます。

RadikoPadにはこういう状況を回避するオプションが準備されています。ただし、とっても面倒くさい。
聞き逃したくない瞬間が途切れていた!という場合は、再ダウンロードを推奨しますが、大切な番組を無傷で保存しておきたいという要望に対応するおまけ機能として紹介しておきます。

Radikoタイムフリーは5秒ごとの音声ファイルを連続して送信しているので、番組URLリストを作って全てのファイルを確実にダウンロードすれば、音飛びがない音声ファイルを作ることが出来ます。

これを補助してくれるのが、Shift +ダウンロードボタン 操作。番組をドラッグ&ドロップしたあと shift + ダウンロードダウンロードが完了すると、テキストファイルが保存されます。音声ファイルはありません。

次のようなファイルが、<番組名>.txt として保存されています。

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-PROGRAM-DATE-TIME:2017-12-25T13:00:00+09:00
#EXTINF:5,
https://media.radiko.jp/sound/b/TBS/20171225/20171225_130000_Rob3a.aac
#EXT-X-PROGRAM-DATE-TIME:2017-12-25T13:00:05+09:00
#EXTINF:5,
https://media.radiko.jp/sound/b/TBS/20171225/20171225_130005_Lnaxv.aac
#EXT-X-PROGRAM-DATE-TIME:2017-12-25T13:00:10+09:00
#EXTINF:5,
https://media.radiko.jp/sound/b/TBS/20171225/20171225_130010_I5Sj8.aac
#EXT-X-PROGRAM-DATE-TIME:2017-12-25T13:00:15+09:00
#EXTINF:5,
https://media.radiko.jp/sound/b/TBS/20171225/20171225_130015_SwsLp.aac
#EXT-X-PROGRAM-DATE-TIME:2017-12-25T13:00:20+09:00
#EXTINF:5,
https://media.radiko.jp/sound/b/TBS/20171225/20171225_130020_TvE5t.aac
#EXT-X-PROGRAM-DATE-TIME:2017-12-25T13:00:25+09:00
#EXTINF:5,
https://media.radiko.jp/sound/b/TBS/20171225/20171225_130025_38TK7.aac
#EXT-X-PROGRAM-DATE-TIME:2017-12-25T13:00:30+09:00
以下省略

#で始まる行はコメント行で、https: で始まる行が細分化された番組ファイルのURLです。

全ての、.aac ファイルをダウンロードして、最初からつなぎ合わせれば番組が完成・・・・・
するはずですが、その方法にはいろいろありますし面倒くさい。Irvine をインストールするとか、ffmpeg を使うとか。

今回、紹介する方法は、RadikoPad が利用できるWindows10環境であれば追加インストール不要で、誰もが操作できるという方法です。ただし、コマンドタイピングが必要です。

操作方法

DOS窓、または Powershell を立ち上げて、コマンドライン入力出来る状態を作ります。

続いて、RadikoPadの番組保存フォルダーに cd 移動します。(もし、放送局ごとのサブフォルダーを作っているなら、更に下にcd移動します。)

そこで、ffmpeg コマンドを相対パスで次のように発行します。

“..\ffmpeg.exe” -protocol_whitelist “file,http,https,tcp,tls” -ishift+ダウンロードで保存したファイル名.txt-acodec copy -bsf aac_adtstoasc “保存したいファイル名”
赤文字の部分は固定、青文字の部分は shift+ダウンロードで保存したファイル名や、ユーザーが保存したいファイル名で可変部分。 ffmpeg は相対ですのでコマンドを発行する位置からの相対位置または絶対パスを指定して下さい。

以下は、コマンドの例。ffmpegはRadikoPad直下。保存フォルダーの直下に保存します。

cd \Users\radiko\Documents\RadikoPad103\Record
..\ffmpeg.exe -protocol_whitelist "file,http,https,tcp,tls" -i たまむすび_20171226.txt -acodec copy -bsf aac_adtstoasc tamamusubi.m4a

Powershell でコマンド実行した例が以下。(cmd.exe でも同じ)

PS C:\Users\radiko\Documents\RadikoPad103\Record> ../ffmpeg -protocol_whitelist "file,http,https,tcp,tls" -i "たまむすび
_0171226.txt" -acodec copy -bsf aac_adtstoasc tamamusubi.m4a
ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable
-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-li
bbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enabl
e-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-li
bopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --en
able-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable
-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zl
ib
  libavutil      55. 34.100 / 55. 34.100
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.100 / 57. 56.100
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
Input #0, hls,applehttp, from '縺溘∪繧€縺吶・_20171226.txt':
  Duration: 02:30:00.00, start: 45987.414356, bitrate: 0 kb/s
  Program 0
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Audio: aac (HE-AAC), 48000 Hz, stereo, fltp, 48 kb/s
    Metadata:
      variant_bitrate : 0
Output #0, ipod, to 'tamamusubi.m4a':
  Metadata:
    encoder         : Lavf57.56.100
    Stream #0:0: Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, 48 kb/s
    Metadata:
      variant_bitrate : 0
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
size=   52114kB time=02:29:59.29 bitrate=  47.4kbits/s speed=12.3x
video:0kB audio:51289kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.608920%

万が一、音飛びが発生(部分的ダウンロード失敗)が発生した場合は、エラーが表示されますので完全なファイルかどうかわかります。抜けがある場合は、ファイルを捨てて、再チャレンジ。

はっきり言って RadikoPadが対象とする万人向けではありません。
また、PCと回線の性能に応じて、Radikoタイムフリーサーバーに相当な負荷を掛けることになってしまいますので、音声ファイルを生涯手元に保存しておきたいと考えている人以外は使わなことを推奨します。

それでも、音飛びが発生した場合に、どうしても完全なファイルを保存したいというニーズに対応するための救済方法として紹介しておきます。

コメントを残す