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