
携帯電話で撮影したビデオがたくさんあるのですが、長さを考えるとかなり巨大です(たとえば、1920×1080 の 3 分間のビデオは 400 MB を超えます)。
これは、携帯電話がストレージ容量よりもバッテリー寿命と品質を優先しているためだと推測します。そのため、Avidemuxを使用して再エンコードし、品質をあまり損なわずにサイズを縮小できると思います。ある程度の劣化は避けられないことは理解しています。しかし、圧縮の余地がたくさんあるので、多くの問題を回避できると思います。知覚できる劣化。
ビデオは MP4 コンテナ内の H264/AAC でエンコードされています。オーディオは Avidemux で直接コピーできます。しかし、ビデオの品質を維持するために H264 エンコーダーのおおよその値をどのように推測すればよいのでしょうか。H264 形式は入力パラメータに関する情報を保持していないと思います。ファイル サイズがまったく膨らんで何も得られない品質レベルを選択することも、ビデオの品質がひどくなる品質レベルを選択することもできます。入力を分析して、品質にあまり影響を与えずにビデオ サイズを縮小する「スイート スポット」を見つける方法はありますか。
この質問にはある程度主観的なところがあるのは承知していますが、私「知覚できる」劣化とみなされるのはどれでしょうか? しかし、ビデオ エンコーダは伝統的に知覚品質によってパラメータ化されていることを考えると、いくつかの基本パラメータのおおよその範囲を決めることは可能でしょうか?
答え1
H264 ビデオの簡略化されたエンコード パラメータの一部を表示するコマンド ライン ツールまたは GUI ツールがいくつかあります。たとえば、ffmpeg
またはmediainfo
:
$ mediainfo myvideo.mp4
[... look for the "Video" section ...]
Format profile : High@L4
Bit rate : 17.0 Mbps
$ ffprobe -show_streams myvideo.mp4
[... look for a [STREAM] header followed by codec_type=video ...]
profile=High
level=40
bit_rate=16996359
profile
とlevel
(の)パラメータに注意してくださいffmpeg
。ビットレートについては心配しないでください。ファイルサイズではわからないことは何もありません。考えるlevel
inの出力ffmpeg
は実際の値の 10 倍です (つまり、40
レベル 4 を意味する場合、41
4.1 を意味する場合など)。
Avidemux では簡略化された設定を使用できるため、これらの設定を行い、細かい設定は Avidemux のデフォルトのままにしておくことができます。
対応する設定は次の通りだと分かりました:
- 高度な設定を使用するチェックが外れています。
- プロフィールは高い。
- IDCレベル4です。
より遅いプリセット値を設定すると、これらのパラメータ内で品質が向上します (ある程度まで)。
2パスエンコードを使用してファイルサイズをさらに小さくすることもできます。適切なファイルサイズを予測する良い方法はわかりませんが、1920×1080の2パス平均ビットレートは6~8Mbpsです。元のファイルサイズをターゲットにしないでください。またはビットレート: 結局、同じサイズのファイルが作成されます。
私の場合、品質レベル 20 (Avidemux のデフォルト) でシングル パス エンコードを実行するだけでファイル サイズが半分になり、Bino と Kinovea を使用して比較しても、モーション ブラーや高コントラストのフレームでも違いは見られませんでした (私には)。7Mbps で 2 パス エンコードを実行すると (シングル パス エンコードの結果)、サイズは 40% に減少しました。