ffmpeg / avconvを使用してビデオをWebMに変換する


18

一方で、私のホームビデオのサイズを最適化しようとしている私はXubuntuの上Pitiviを使用して、テストとしてWebMのにそれらのいくつかを変換します。サイズの違いは重要です。結果のwebmファイルは元のファイルの約10%しかありませんが、画質はほとんど同じです。

またavconv、スクリプトを使用して変換を実行しようとしましたが、結果のファイルは本当にくだらないように見えます。Pitiviのレンダリング設定を見た後avconv -i $1 -q 5 -qmin 0 -qmax 63 ${1%.*}.webm、いくつかのパラメーターを試しました。誰かが、h264ムービーをwebmに変換し、Pitiviと同じ品質を得るために使用する正しいパラメーターを知っていますか?

Pitiviの設定は次のとおりです。 Pitiviプロジェクトの作成 webmへのレンダリング(html5ビデオ) コーデック設定

回答:


53

注:この情報は、VP9エンコーディングに関するFFmpeg Wikiに基づいています。詳細については、その記事を参照してください-それは継続的に維持され、拡張されます。最良の結果を得るために、あなたは、最近のバージョンを使用する必要がありますffmpegことにより、彼らのウェブサイトからダウンロード(静的ビルドで十分でしょう。それが含まれているlibvps-vp9エンコーダを)。

可変ビットレート

VBRエンコーディングは、エンコーダがフレームに割り当てるビット数を自由に選択できるため、最適な全体品質を提供します。固定ビットレートストリーミング用にビデオを準備している場合を除き、このモードを選択します。

オプション1:一定品質のエンコード

通常、特定のファイルサイズをターゲットにしたくない場合は、ビットレートを自由に変化させる必要があります。これにより、最高の品質が得られます。これを行うには、ビットレートを0に設定し、固定レートファクター(CRF)を目標品質レベルに設定します。

ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm

CRF値は0〜63です。値が小さいほど品質が高くなります。推奨値の範囲は15〜35で、1080p HDビデオには31が推奨されます。Googleには、その詳細についてのガイドがあります

オプション2:ターゲットビットレートを使用した2パスエンコーディング

ファイルに特定のターゲットビットレートまたはファイルサイズを設定する場合は、レートを指定し、2パスエンコーディングを使用する必要があります(これにより、最適な品質分布が保証されます)。ここでは、5 MBit / sを選択していますが、これは1080pコンテンツに十分なはずです。

ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 1 -f webm /dev/null && \
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 2 output.webm

WindowsユーザーNUL/dev/null、の^代わりにおよびの代わりにを使用する必要があります\

固定ビットレート

まず、libvpx は固定ビットレートと可変ビットレートのエンコードモードを提供します。特定のファイルサイズまたはストリーミングシナリオを対象としない限り、一定のビットレートは可能な限り回避する必要があります。ファイルサイズあたりの平均品質が低下するためです。それでも、たとえば1 MBit / sで他に何も機能しない場合は、一定のビットレートを設定してみてください。

ffmpeg -i input.mp4 -c:v libvpx-vp9 -minrate 5M -maxrate 5M -b:v 5M output.webm

出力を見て、好みに合わせてビットレートを増減します(またはファイルサイズの制約)。たとえば、500Kまたは5Mなどを使用できます。

指定する必要があります -minrateエンコーダーがCBRを使用するには-maxrate、、およびビットレートがあり-b:v。それらはすべて同じ値を持つ必要があります。そうでなければ、代わりに異なるターゲットビットレートを選択し、VBRエンコードを行いますが、品質は低下します。

オーディオ

VP9エンコーディングに現在選択されているオーディオコーデックはOpusです。FFmpegは、デフォルトで必要なエンコーダーとそのオプションを選択します。明示的に設定-c:a libopusする場合は、同様に行うことができます。その他のオプションについては、libopusドキュメントを参照してください。


4
これは現在、インターネット全体でVP8をエンコードするための単一のベストガイドです。よくやった、もう一回以上投票できたらいいな!
evilsoup

@evilsoupありがとうございます。私はまだそれを微調整しており、後でFFmpeg wikiに新しいページを追加します。
-slhck

これは本当に素晴らしい答えです!実際、常にデフォルトの256 kBit / sを使用していたため、ビデオが常に同じ低品質であった理由がわかりました。どうもありがとうございました!
jeroen

元のmp4と変換されたwebmのサイズの違いは何ですか?
switz 14

1
@Danガイドを更新しました。少し古くなっていることに気付きました。それが便利だとうれしいです。
slhck
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.