どのH.264 / H.265ビデオ圧縮パラメーターは、より良い圧縮でDVDと同等の品質を提供しますか?


11

ビデオをMP4ファイルに変換してハードドライブに保存することでビデオを保持したいのですが、DVDビデオディスクの箱を手に入れました。

最新のH.264 AVCおよびH.265 HEVC圧縮アルゴリズムがDVD標準のMPEG2より優れていることを考えると、ビデオを圧縮することでハードドライブの容量を節約し、DVDの元の品質を最大99%節約できると思います。

  • H.264(FFMPEG + libx264)圧縮パラメーター
  • H.265(FFMPEG + libx265)圧縮パラメーター

私の目標を達成するために使用する必要がありますか?

パラメータとは、CBR / CRF値、プリセット(veryslow /プラセボは不可)、フラグなどを意味します。

PS:私は使用してケースを制約することを好むだろう-pix_fmt yuv420p-profile:v baseline -level 3.0、ファイルが古いハードウェアデコーダチップに依存する古いデバイスを含め、すべてのデバイス上でOKを果たしていることを確認します。(-gパラメーターを使用して)いくらか増加したIフレーム周波数を使用することも、低速で待ち時間の長いメディアの使用を容易にするために望ましいです。

HEVCの場合、それをサポートするデバイスでハードウェアアクセラレーションによるスムーズな再生を保証するパラメーターを使用することも好みますが、ハードウェアアクセラレーションH.265を提供するデバイスを見たことがないため、この制約に焦点を当てるつもりはありません。まだまったくデコードしていません。

回答:


14

このため、常に最新のffmpegバージョンを使用し、できれば自分でコンパイルする必要があることに注意してください。これにより、オーディオエンコーディング用の最新のlibx265およびlibfdk-aacにアクセスできます。

また、約10 MBit / sのDVDからH.26​​4ビデオの場合は約1–2 MBit / s、H.265ビデオの場合は0.5–1 MBit / sにすると、データレートが大幅に節約されます。以下の手順で品質を変更すると、ビットレートに影響する可能性がありますが、それでもデータの削減は重要です。

H.264

品質/レート制御のために、一定のビットレートではなくlibx264でCRFモードを使用する必要があります。CRFを使用すると、元のビデオ解像度やその複雑さに関係なく、平均品質が維持されます。一定のビットレートは、伝送媒体(ハードドライブの速度、インターネットのスループットなど)に制約されている場合にのみ役立ちます。

CRF値を選択するのは難しい部分です。出力を確認する必要があります。libx264(23)のデフォルトでは、サイズと品質のかなりのトレードオフが提供されます。しかし、あなたのオリジナルのソースがすでに(非常にではなく、圧縮されたことを考えると良いな20このように、ブルーレイに比べて品質)、あなたは少し低いようにCRFを変更することがあり約3分で必要なビットレートを増加します。

待機時間に応じてプリセットを選択します。slowここでは良い値のようです。

ffmpeg -i input \
-c:v libx264 -crf 20 -pix_fmt yuv420p \
-x264-params keyint=240:min-keyint=20 \
-preset:v slow -profile:v baseline -level 3.0 \
-c:a libfdk_aac -vbr 4 \
output.mp4

libfdk-aacが利用できない場合は、組み込みのffmpeg AACエンコーダーを使用できます。の-c:a aac -strict experimental -b:a 128k代わりに使用します-c:a libfdk_aac -vbr 4

H.265

調査によると、HEVCを使用すると、H.264と比較して最大74%のビットレートを節約できるということです。これは、Ultra-HDシーケンスの主観的な視聴デー​​タに基づいています。もちろん、それはソースコンテンツの時間的な複雑さに依存します。保存されるデータの量は、シーケンスのコーディングが難しい場合ほど高くはありません。どちらの方法で、50%のデータ削減は絶対に可能であると安全に言えます。

libx265のデフォルトのCRFは28です。同じソースコンテンツを使用すると、CRF 23のlibx264と比較して約半分のビットレートになります。これは、実際のビットレートに関係なく、つまり、H.264バージョンが1.5 MBit / sの場合、 H.265は約750 kBit / sを使用しますが、別のシーケンスでは350 kBit / sに対して750 kBit / sです。いくつかのシーケンスでDVD-PAL解像度で実行しましたが、品質の違いを区別できませんでした。

ffmpeg -i input \
-c:v libx265 -pix_fmt yuv420p \
-x265-params crf=28:keyint=240:min-keyint=20 \
-preset:v slow \
-c:a libfdk_aac -vbr 4 \
output.mp4

詳細については、関連するリソースを以下に示します。


細かい回答ありがとうございます。ところで、keyintは実際にはどういう意味ですか?
Ivan

1
keyintx264の/ x265には、すなわち、デコーダは更新可能なキーフレーム間間隔、IDRフレームの間隔です。その間に、たとえばシーンカットが発生した場合など、非キーフレームIフレームが存在する可能性があります。それはと同等だ-g、私は間違っていない場合は、パラメータ。
slhck 2014年

ところで、@ slhck、あなたの答えで私を驚かせたもの-AACエンコーディングライブラリの選択に注意を払うこと。私は以前はほとんど同じで違いはほとんどない、オーディオ部分は単純であると考えていました(ビットレートを選択して実行するだけで、MP3、AAC、Vorbisなどのすべての主要な損失コーデックはほぼまたは正確にサウンドを再生します128 kbps以上でも同じです)。libfdk-aacと通常のaacの間に実際に顕著な違いがあるということですか?
Ivan

1
@Ivan Zeranoeビルド-c:a aac -strict experimentalは、私の答えに示されているように、間違いなく実行できるはずです。そして、私は同意します。私はそれをWindows上で構築しようとはしません。
slhck 2014年

2
@Ivan(1番目のコメント):ffmpeg-wikiを参照:「高から低への品質に基づく:libopus > libvorbis >= libfdk_aac > aac > libmp3lame >= libfaac >= eac3/ac3 > libtwolame > vorbis > mp2 > wmav2/wmav1AACの場合のみ:(3つのエンコーダーを使用できるため、少し混乱するため):libfdk_aac > aac > libfaac> =記号はより大きいか同じことを意味します品質。"
Golar Ramblar 16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.