一方で ホームビデオのサイズを最適化しようとしています XubuntuのPitiviを使用して、テストとしてWebMにいくつか変換しました。サイズの違いは重要です。結果のwebmファイルは、元のファイルの約10%にすぎませんが、画質はほとんど同じです。
また、avconv
を使用して変換を試みたので、スクリプトを作成することもできましたが、結果のファイルは本当にひどく見えます。 Pitiviのレンダリング設定を確認した後、いくつかのパラメーターを試しました:avconv -i $1 -q 5 -qmin 0 -qmax 63 ${1%.*}.webm
、しかし、品質はまだがらくたのように見えるので、私はいくつかの間違ったパラメータを欠落/使用しているようです。誰かがh264ムービーをwebmに変換してPitiviと同じ品質を得るために使用する正しいパラメーターを知っていますか?
これらはPitiviの設定です:
注:この情報は VP9エンコーディング のFFmpeg Wikiに基づいています。詳細については、その記事を参照してください。継続的に保守および拡張されます。最良の結果を得るには、最新バージョンの
ffmpeg
を使用する必要があります Webサイトからダウンロード (静的ビルドで十分です。libvps-vp9
エンコーダーが含まれています)。
VBRエンコーディングは、エンコーダーがフレームに割り当てるビット数を自由に選択できるため、全体的な品質が最適になります。固定ビットレートストリーミング用のビデオを準備する場合を除き、このモードを選択します。
通常、特定のファイルサイズをターゲットにしたくない場合は、ビットレートを自由に変化させる必要があります。これにより、最高の品質が得られます。これを行うには、ビットレートを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パスエンコーディングを使用する必要があります(これにより、最適な品質分布が保証されます)。ここでは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ユーザーは、/dev/null
の代わりにNUL
を使用し、^
の代わりに\
を使用する必要があります。
まず、libvpx 固定ビットレートと可変ビットレートのエンコーディングモードを提供 。ファイルサイズごとの平均品質が低下するため、一定のビットレートは可能な限り避けてください(特定のファイルサイズまたはストリーミングシナリオをターゲットにしない限り)。それでも、他に何も機能しない場合は、一定のビットレートを設定してみてください。 1 MBit/sの場合:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -minrate 5M -maxrate 5M -b:v 5M output.webm
出力を見て、ビットレートを好みに応じて増減します(またはファイルサイズの制限)。たとえば、500K
または5M
などを使用できます。
エンコーダでCBRを使用するには、-minrate
、-maxrate
、およびビットレート-b:v
を指定する必要があります。それらはすべて同じ値である必要があります。そうしないと、代わりに別のターゲットビットレートが選択され、VBRエンコーディングが行われますが、品質が低下します。
VP9エンコーディングに現在選択されているオーディオコーデックはOpusです。 FFmpegはデフォルトで必要なエンコーダーとそのオプションを選択します。 -c:a libopus
を明示的に設定したい場合は、同様に設定できます。その他のオプションについては、 libopus
のドキュメント を参照してください。