私の携帯電話で撮ったビデオはたくさんありますが、その長さを考えるとかなり巨大です(たとえば、1920×1080での3分のビデオは400MBを超えます)。
これは、電話がストレージスペースよりもバッテリーの寿命と品質を優先するためだと思います。そのため、品質をあまり犠牲にすることなく、Avidemuxを介して再エンコードし、サイズを縮小できると思います。多少の劣化は避けられないことを実感しています。しかし、圧縮の余地が非常に多いので、大幅な知覚可能劣化を回避できるはずだと思います。
ビデオは、MP4コンテナのH264/AACでエンコードされます。オーディオをAvidemuxに直接コピーするだけです。しかし、ビデオの品質を維持するために、H264エンコーダーの概算値をどのように推測するのですか? H264フォーマットが入力パラメータに関する情報を保持しているとは思いません。ゲインなしでファイルサイズを完全に膨らませる品質レベルを選択することは可能です。また、ビデオをひどくする品質レベルを選択することも可能です。入力を分析して、品質にあまり影響を与えずにビデオサイズが縮小される「スイートスポット」を見つける方法はありますか?
この質問にはある程度の主観があることを私は理解しています。 [〜#〜] i [〜#〜]「知覚可能な」劣化と見なされるものは何ですか?しかし、ビデオエンコーダーは伝統的に知覚品質によってパラメーター化されていることを考えると、いくつかの基本的なパラメーターのおおよその範囲を考え出すことは可能ですか?
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
内)パラメーターに注意してください。ビットレートについて心配する必要はありません。ファイルサイズが示していないことは何もわかりません。 Ilevel
の出力のffmpeg
は実際の値の10倍であると考えます(つまり、40
はレベル4を意味し、41
は4.1などを意味します)。
Avidemuxを使用すると、簡略化された設定を使用できます。これらを設定して、より細かい設定をAvidemuxのデフォルトのままにすることができます。
これらが対応する設定であることがわかりました。
遅いPreset値を使用すると、これらのパラメーター内の品質が向上します(ポイントまで)。
2パスエンコーディングを使用して、ファイルサイズをさらに縮小することもできます。妥当なファイルサイズを予測するための適切な方法はわかりませんが、1920×1080の適切な2パス平均ビットレートは6〜8Mbpsです。元のファイルサイズまたはビットレートをターゲットにしないでください。同じサイズのファイルになってしまいます。
私の場合、品質レベル20(Avidemuxのデフォルト)でシングルパスエンコーディングを実行するだけでファイルサイズが半分になり、BinoとKinoveaを使用した比較では、モーションブラーや高コントラストのフレームでも違いは見られませんでした。 2パスエンコーディングを7Mbps(シングルパスエンコーディングが出てきたもの)で実行すると、40%に低下しました。