web-dev-qa-db-ja.com

ロスレスHEVCとFFV1のファイルサイズの大きな違い

FFmpegを使用して、静止画(input.jpg≈1MB)と音楽(input.wav≈20MB)でミュージックビデオを作成しました。ロスレスHEVCコーデック(output.mkv≈70MB)で生成されたビデオとFFV1コーデック(output.mkv≈10GB)で生成されたビデオの間で、ファイルサイズにこのような大きな違いが生じるのはなぜですか?

発行されたコマンド

  • ロスレスHEVCの場合:
ffmpeg -loop 1 -i input.jpg -i input.wav \
       -c:v hevc -crf 0 -c:a flac -s 3840x2160 -r 60 -shortest output.mkv
  • fFV1の場合:
ffmpeg -loop 1 -i input.jpg -i input.wav \
       -c:v ffv1 -c:a flac -s 3840x2160 -r 60 -shortest output.mkv

ロスレスHEVCに提供されているパラメーターが正しくない(実際にはロスレスではないという意味で)か、FFV1がひどいコーデックであるように見えます。

1
Maggyero

FFV1はイントラコード化されているため、各フレームは他のフレームとは独立して圧縮されます。 HEVCは通常相互コード化されています。

Libx265を使用していると仮定すると、真のロスレスモードには-x265-params lossless=1を追加する必要があります(-crf 0は追加しません)。エンコードの最後に、x265はlossless compression ratioを表示する行を出力する必要があります。

x265はx264よりも優れた内部予測を備えており、FFV1を期待しているため、可逆圧縮の方が効率的です。ただし、デコードにはより多くのリソースが必要です。

3
Gyan