【2018-7-31追記】
アニメイトタイムズの配信形式が変わり、このエントリーに記載されている方法では保存できなくなりました。新しい保存方法についてはこちらを参照してください。
2017年最初の朝、目が覚めたら何故か突然「あれこうやったら録音できるんじゃね?」と閃くところがあり、やってみたら出来た!というわけでちょうど3年越しにアニメイトタイムズ(旧アニメイトTVラジオ)の配信保存に関するネタの続編です。
以前紹介したrtmpdumphelperは1時間超えの番組が尻切れになってしまう問題がありましたが、こちらはそういった問題が発生しません。但しダウンロード用アドレスを取得するためにUserAgentを切り替える必要があるなど、若干知識が必要になります。
-
【概念】
FLASHは既に死にかけの規格で、多くのスマートフォンは再生に対応していません。
「あれ?でも俺のiPhoneで再生できてるよ?」と思われる方もいるでしょう。
この手の配信はFLASHが再生できない端末向けに、大抵の場合HLS形式(m3u8)でも同じ内容を配信しており、アクセスしてきた端末によって自動的にどの形式で再生するのかを切り替えているんです。今回はこのHLS形式で配信しているデータをffmpegで録音します。
-
【説明】
PCのブラウザでアニメイトタイムズラジオのページにアクセスするとFLASH形式のプレイヤーが立ち上がってしまうため、ブラウザのUserAgentを切り替えます。
いきなり訳わかんないことを言い出したと混乱した方は適当に「UserAgent 偽装」などでぐぐって勉強して下さい。
iPhoneかAndroidに偽装しますが、同じ番組でも先週はAndroid用のm3u8ファイルでうまくいったのに、今週はiPhone用じゃないとうまくいかなかった、あるいはその逆・・・というパターンが良くあるので、エラーが出るようになった際はとりあえずUserAgentを切り替えてみてください。
-
【iPhoneの場合】
UserAgentをiPhoneにすると画面構成が変わり、HLS形式用のプレイヤーが読み込まれますので、ソースを開いて"iPhonePlaylist.m3u8"の含まれている行を見つけ、ダブルクォーテーション(")の間の文字列をコピー。
ブラウザのURL欄に貼りつけるとm3u8形式のデータがダウンロードできます。
PCに保存されたiPhonePlaylist.m3u8という名前のファイルをメモ帳か何かで開くと、中に先ほどとは別のm3u8形式のURLが記載されているのでこれをコピーします。
これでffmpegに渡すURLが取得できました。
-
【Androidの場合】
UserAgentの変更がうまくいっていればスマートフォン用のページが表示されます。ページ内の再生ボタンを押すとラジオ再生が始まる代わりにm3u8形式のデータがダウンロードされます。
PCに保存されたiPhonePlaylist.m3u8という名前のファイルをメモ帳か何かで開くと、中に先ほどとは別のm3u8形式のURLが記載されているのでこれをコピーします。
"http://"から始まって".m3u8"で終わる部分がダウンロードに使うアドレスです。
アドレスが複数記載されている場合もありますが、回線速度に応じて音質を選ぶようになっているだけで内容は変わらない・・・はず。
これでffmpegに渡すURLが取得できました。
-
【ffmpegでダウンロード】
ffmpegをダウンロードしてきて、コマンドプロンプトから以下のようにコマンドラインを入力する("○○"の部分にURLを貼付け)とデータをダウンロード→audio.m4aというm4a形式ファイルが作成されます。
ffmpeg -i http://○○.m3u8 -bsf:a aac_adtstoasc -vn -acodec copy audio.m4a
ダウンロードして変換中。
ffmpegと同じフォルダ内に"audio.m4a"というファイルが出来上がっていれば成功。
-
【おまけ】
上記のコマンドをベタ打ちしただけのバッチファイルを置いておいたら、読者の方が使いやすく改良してくださったのでサンプルを差し替えました。
→ こちら
ffmpegと同じフォルダにバッチファイルを置き、ダブルクリックすると下のような黒い画面が表示されます。
ここに上で取得したURLをペースト。
続いてファイル名を適当に入力(拡張子は不要です)。
これでファイルがダウンロードできるはず。
コメントをくださったさめさん、ありがとうございます。
-
やってることは面倒くさい割に大して複雑じゃないので、ある程度プログラムを書ける人ならツール作れそうなんですけども。
自分は聞いてる番組が終わっちゃって久しいので無理です。できないです。
ζ*'ヮ')ζ<アッキーやんなよ!
【2018/2/8】いただいたコメントを基に記事を少し修正
試してみたのですがPort missing uri のエラーが表示されました。
IPの競合ですかね
あらー、ダメですか
仕様変更でもあったのかとこちらでも試してみましたが特に問題ないようです
動作確認時に使ったバッチファイルを置いておきますのでよろしければテストにご利用ください
ffmpegと同じフォルダにおいてダブルクリックで動作するはずです
→ http://raduga.dip.jp/memo/pic/test.bat
バッチファイルありがとうございます。
バッチファイルを書き換えて保存に成功しました。
ぱよぱよリスナーだったのですかw
長い間RtmpDumpで5数える方法でDL出来ていたのですが、遂にFireFoxにRtmpDumpが反応しなくなって、もう一度検索してたどり着きました。
ご指示どうり作業を進める中で偶然幾つかの工程が省ける方法が見つかったので報告です。なるべくコピペやファイル置き換えをしたくない人にオススメです
ffmpegの代わりにEagleGetというダウンロードソフトを使うと、Ts形式でゲット出来ます。
まず、EagleGetの設定の監視タブの「以下のファイルの形式の場合は自動的にダウンロードを開始」にm3u8を追加しますクリップボードの監視やブラウザの監視にチェックがついていることも必要です
偽装してHPのソースを開いて"iPhonePlaylist.m3u8"の含まれている行を見つける所まではいっしょです。
そこでURLをコピーするとEgaleGetのDLダイヤログが立ち上がりますのでそのままDLしてください。
(DLが1分ぐらい始まらないことがありますが待ちます。赤くレジューム出来ませんと出ますか無視でOK)
保存先にiPhonePlaylist.tsや、~.tsの形式でファイルが出来ます。
VLC media playerで再生やmp4に変換したり出来ます。
貴重な情報ありがとうございます。
こちらでも実際に試してダウンロードできることを確認しました。
何かうまいこと使える方法が無いか考えてみます。
添付してあったbatファイルをベースに毎回編集しなくても済むようにしてみました。本当はファイル自体から抽出できたらいいんでしょうけど途中から面倒くさくなって断念。。。
@echo off
set /p URL="Plese paste a URL >"
echo URL is %URL%
set /p FName="Plese input FileName >"
echo FileName is %FName%
ffmpeg -i %URL% -bsf:a aac_adtstoasc -vn -acodec copy %FName%.m4a
コメントありがとうございます。
早速サンプルバッチファイルを差し替えて記事を少し修正しました。
いただいたもの丸々コピーで恐縮です。
xtreme download managerを使えば簡単にts形式でDLできました。