
私の Canon 60D はビデオを録画するときに .MOV ファイルを作成しますが、.MOV コンテナーには H264 ビデオ ストリームと PCM オーディオ ストリームが含まれていることがわかりました。
ffmpeg と GSpot を使用していくつかのビデオを確認したところ、ビットレートがかなり高いことがわかりました (640x480 の場合は 22,000kbps、1920x1080 の場合は 45,000kbps)。
ファイルのサイズを小さくしたいのですが、品質はかなり高く保ちたいです。考えられる最も簡単な方法、つまりビット レートを下げることを試してみたところ、期待どおりの結果になりました。ビット レートを半分にすると、ファイル サイズも約半分になります。しかし、「適切な」ターゲット ビット レートを決定する方法があるかどうか、または可変ビット レートを試しても意味があるのか疑問に思っています。
答え1
しかし、「適切な」ターゲット ビットレートを決定する方法はあるのだろうか…
適切なターゲット ビット レートは、次のいずれかのビット レートです。
- 素材をストリーミングしているネットワーク(3Gネットワーク、自宅のWiFiなど)でサポートされているかどうかは簡単に計算できます。
- 良さそうだあなたこれは非常に主観的な尺度である
22 Mbit/s または 45 Mbit/s は、平均的なユーザーにとって、特に h.264 のような既に圧縮されたビデオにとっては、確かにかなり高いです。余裕のあるストレージ容量と、どの程度の品質を犠牲にしても構わないかを考慮して、ビット レートを「妥当な」値まで下げることは間違いなく可能です。
サイズが本当に必要ない場合、または編集する処理能力がない場合は、1080p ビデオを 720p にサイズ変更することもできます。
…あるいは可変ビットレートを試みる意味があるのかどうか
固定ビット レートのポイントは、送信されるビデオの最大ビット レートを制限するボトルネックがあるストリーミング メディア シナリオに適応することです。今日のマルチメディアの世界では、これは必ずしも意味をなさなくなっています。
ビデオを1秒あたりのビット数を一定に圧縮すると、基本的にエンコーダーに同じ時間枠をエンコードするのに常に同じビット数を使用するように指示することになります。これが最善のアプローチでしょうか? すでにお分かりかと思いますが、そうではありません。CRF ガイドHandbrake から (これについては後で説明します):
人間の目は、動いている物体よりも、静止している物体のほうが詳細に認識します。このため、ビデオ コンプレッサーは、物体が動いているときには圧縮率を高くし (詳細を多く削除)、静止しているときには圧縮率を低くします (詳細を多く保持)。主観的には、ビデオの品質が高くなったように見えます。
それはそうするできる限り可変ビット レートを使用することをお勧めします。固定ビット レートのビデオと同じファイル サイズであっても、ビデオの見栄えが良くなります。
さらに、ほとんどのエンコーダー(最も有名なのは264ビット– 頻繁に実行するとても固定ビットレートを使用するように指示するのは良くありません。フレームに費やすビット数に関して、もう少し「自由」を与える方がよいでしょう。結局のところ、それはエンコーダの仕事であり、あなたの仕事ではありません。そして、それは「一定品質」と呼ばれます。
もう十分でしょう。実際、それは何を意味するのでしょうか。FFmpegを使用してビデオをエンコードする場合、すでに十分なツールを使用しています。x264もインストールし、両方の最新バージョンを使用している場合は、現在無料で入手できる最高のエンコーダの1つを使用しています。固定ビットレートでエンコードする代わりに、x264に使用率を選択させます。定率係数オプション。
非常に単純なケースでは、17から23の間の値を設定することを意味します。出力コンテナとしてMOVではなくMP4を選択するのは、より良いツール再多重化が利用可能:
ffmpeg -i input.mov -c:v libx264 -crf 22 output.mp4
値が低いほど品質は良くなり、出力は大きくなります。逆に、値が高いほど品質は低くなります。同時に、必要な平均ビットレートも当然減ります。x264 エンコーディングガイドの詳細については、 をご覧くださいffmpeg
。
ここでのあなたの仕事は、次の CRF 値を見つけることです。
- 全体的なビットレートを許容できるレベルまで下げる
- 画質をあまり落とさず、動画の見栄えを良くする
はい、これには多くのエンコードと試行錯誤が伴いますが、これはビデオの調整とエンコードを行う場合の日常業務です。
ああ、コマンドラインが気に入らない場合は、ハンドブレーキは、まったく同じ機能を備えた無料のクロスプラットフォーム ツールです。CRF スライダーも備えています。
答え2
HandBrake CLIを試す
いくつかの MOV ファイルを縮小したかったのですが、ビデオ オプションの詳細をすべて知るつもりはありませんでした。ハンドブレーキCLI私が使ったのはこれです。プリセットは素晴らしいです:
HandBrake は、MacGui に組み込まれているプリセットとまったく同じ、ハードコードされた工場出荷時のプリセットを提供します。
私の場合、これはうまくいきました:
HandBrakeCLI -i input.MOV -o output.mp4 --preset="Normal"
プリセットがない場合、出力は非常に小さく、品質は良くありませんでした。「標準」プリセットは私には良さそうに見えましたが、 で利用可能な他のプリセットを確認したり、HandBrakeCLI --preset-list
必要に応じてすべてのオプションを自分で調整したりすることもできます。