ffmpegでm3u8動画取得時に解像度を指定する方法

 別荘での通信環境はすぐにギカが足りなくなってしまいます。この間も、ちょっと動画を見ようと思ったら、すぐ1.4GBを越えてしまいました。でも、よくよく考えてみると、ちょっとでかすぎるような気がしたので、調べて見たら、どうも、Full HDの動画を取得していたみたいです。ちょっと、見たいと思っただけなので、Full HDである必要性は全くありません。解像度を下げようと思ったのですが、設定がありませんでした。言わく、自動で管理しているのだそうです。確かに、通信速度は速いのかも知れませんが、僕が知りたいのは通信量です。通信速度が早ければFull HD1択と言うのはあまりに乱暴ではないでしょうか。


 それで、少し調べてみると、m3u8のストリームであれば、ffmpegで落とせるみたいです。これを推奨するつもりはないので、ここでは、詳しい説明をするつもりはありません。ただ、解像度を選択する方法は、出てこなかったので、その情報だけ、書いてみようかと思います。
 m3u8の中を見ると、複数の解像度の動画と音声の情報が書かれていました。ということは、一応複数の解像度で動画が提供されているということになります。解像度を直接指定する方法が出てたので試してみたのですが、うまく行きませんでした。それで、いろいろ試していたのですが、ffmpegはm3u8をどう解釈しているのだろうと、ふと思いました(m3u8は動画の実体ではないので)。ffmpegのインストールセットには、ffprobeという実行ファイルがあって、こいつに動画ファイルを食わせると、動画の情報を表示してくれます。試しに、ffprobeにm3u8を指定して実行してみると、各解像度の動画と音声の情報がProgram番号単位で、表示されました。ということは、取得したいProgram番号を指定できれば、取得したい解像度の動画を取得することが出来ることになります。調べて見ると、mapオプションで、指定できることがわかりました。例えば、2番を指定したい場合は、-map p:2と指定すればProgram 2の動画が取得出来ます。m3u8は動画提供者が勝手に作ることが出来るファイルですので、動画提供者が変われば、毎回確認する必要があります。これで、何とか、動画を視聴することが出来ました。通信量は随分減って、これで、一日1本くらいの動画は問題なく見れそうで、頑張れば、2本くらいまでなら行けそうです(動画の視聴時間にもよりますが・・・)。
 本当はプレーヤー側で対応して欲しい話です。実際、出来るプレーヤーもありますしね。通信量に制限があると、昔の従量制だったころを思い出します。あの頃は、何を見るとどのくらいかかるかを気にしてて、必要な時だけ画像を表示したりして、けちってました(広告バナーを表示するのもタダではないので)。通信量の制限については、契約の問題なので、自動で取得することは出来ません。ということは、ユーザー側で選択出来るような形にしてくれないと、見たくても見れないことになってしまいます(実際、途中で止まってしまいました)。プアーな環境の人に、もう少し配慮して欲しいですよね。ま、無線環境でも、制限がなくなれば、こんなことで悩まなくて済むのでしょうが・・・。5Gに期待したいところですが、山には整備されない気もしますね・・・。

カテゴリーPC

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です