potpro (ぽとぷろ)
Full-stuck engineer(Not Full-stack)
JS/PHP/Go/Docker/Nginxなど。技術または趣味寄りの発信ブログです。
全 85 記事ffmpegでエンコードしたVP9(WebM)動画をブラウザで再生してみる
ffmpegでエンコードしたVP9(WebM)動画をブラウザで再生してみる
今回は完全に趣味の記事です。あまり役に立ちません。
今月の2/15に、ffmpeg3.0が公開されました。
ffmpegはかなり有名で歴史もある動画音楽画像のエンコーダ/デコーダフリーソフトウェアです。 基本的にコマンドラインですが、覚えればほとんどの動画や音楽に変換可能です。(ライセンス絡みで変換できないものもあるけど)
自分もmp3に音楽を変換するときや、H264動画にする時などに重宝していました。
そこで、新顔の動画コーデックであるVP9(音声はopus)に変換して、対応するブラウザでただ再生しようという記事です。 VP9はVPシリーズの最新版の動画コーデックです。
VPシリーズはOn2 TechnologyがGoogleに買収され、Google傘下で開発されています。
そして、Googleに買収される前から好きなコーデックでした。今やH.264のシェアが一番で、次世代規格として4K/8K放送に採用されそうなH.265/HEVCがやっぱり強いですが・・・
VP9はGoogleに買収されたおかげでオープンソースになりました。
なのでその利点もあり、期待はされています。 オープンソースなので、最近のブラウザにもデコーダが組み込まれています(IE除く)。
なので再生も可能なはず。 現時点では再生できるだけで配信に使用しているサイトも無いので・・・自分で作ろう。 用意する画像は、元々取っていた自分のゲームのプレイ動画を使用しました。
しかし、1時間あるので、そこそこ動きがある序盤の10秒を使いました。 いやだって・・・これを無圧縮AVIにしたら10秒で1.7GBになってしまいましたもの。
10秒でこれなんだから1時間とか無理です。エンコード時間もかかりますし。 ffmepgの設定はこんな感じです。VP9 Encoding Guideを参考にしました。
ffmpeg -i "InputFile.avi" -c:v libvpx-vp9 -b:v 1000K -threads 4 -speed (0~4) -tile-columns 0 -frame-parallel 0 -auto-alt-ref 1 -lag-in-frames 25 -g 9999 -aq-mode 0 -c:a libopus -b:a 64k -f webm "OutputFile.webm"
元動画:
- 動画:フルHD 1920x1080 H.264(Shadowplay) 14Mbps 01:12:20 7.28GB
- 音声:AAC-LC 192kbps 作成 動画:
- 動画:フルHD 1920x1080 VP9(Webm) 1Mbps設定 00:00:10 1.25MB予定
- 音声:opus 64kbps エンコーダ:ffmpeg version N-78598-g98a0053(Win-x64) Lavc57.24.103 libvpx-vp9 libopus
今回は設定の
- speed0(画質優先、速度なんて関係なし)
- speed1(普通、速度はそこそこ)
- speed4(速度優先)
の3つでエンコード速度を図ります。
使用するPCのCPUとメモリは、 CPU intel-i5 2500K 4.0GHz(OverClock) Memory 8GBです。
可もなく不可もなくなPCです。
結果
- speed4(速度優先) 1分30秒(x9) 動画1245KB/音楽71KB
- speed1(通常) 3分20秒(x20) 動画1249KB/音楽71KB
- speed0(画質優先) 20分(X120) 動画1255KB/音楽71KB speed0
・・・1つのフレームに2秒くらいかけてた。画質優先とはいえ遅すぎる。
speed1はそこそこ早くていいですね。常用はこのレベル。 ちゃんとビットレートを守ってくれてます。 予測できないやつもありますから。 で、再生はGoogle Chromeで行います。 html上で再生したいのであればvideoタグを書けばいいですが、
ChromeはD&Dで再生できます。楽ですね。 結果はこんな感じです。どうでしょう。1Mbpsにしてはかなりいいんじゃないでしょうかね。 というか、ソースが微妙過ぎて、比較しずらいかもしれません。
元動画(H264 14Mbps)
WebM動画(VP9 1Mbps)
こんな感じで、完全に趣味に寄った記事でした。 これからも、VP9は個人的に応援したいところです。