web-dev-qa-db-ja.com

元の品質を維持しながらMKVをMP4に変換するためのハンドブレーキ設定

私はMP4に変換する必要があるたくさんのMKVファイルを持っています、そして私の選んだソフトウェアはHandbrakeです。

どの設定が変換に最適かを判断しています。私は完全な品質を保ちたいです。元の設定で変換して何も変更しないか、または変更する必要があるものがありますか。

43
orange

ハンドブレーキの問題は何ですか?

Handbrakeを使用して、あるコンテナ形式から別のコンテナ形式に変換する場合(つまり、MKVをMP4に変換する場合)、Handbrakeはビデオを再エンコードします。ビデオパススルーを有効にした 各機能要求 も参照してください。

ビデオパススルーの追加は予定されていません。 HandBrakeは、ビデオトランスコーダーとして設計されています。パススルーを許可するようには設計されていません。

したがって、Handbrakeでコンテナを変更すると、ビデオは再エンコードされます。つまり、a)時間を要し、b)品質が低下する可能性があります。

再エンコードする必要がありますか?コンテナを交換することはできませんか?

パススルーは不可能なので、次のことを自問してください:再エンコードが必要ですか?コンテナをMKVからMP4に変更するだけの場合、通常何もエンコードする必要はありません、単にビデオの周りの「ラップ」を変更します。これにより品質が失われることはなく、はるかに高速なプロセスになります。

FFmpeg でコンテナを簡単に交換できます。ビデオとオーディオのストリームをコピーするように指示するだけです。

ffmpeg -i input.mkv -c copy -map 0 output.mp4

また、MP4コンテナを作成できる MP4Box などのツールもあります。MKVでも MKVtoolnix を使用すると同じことが言えます。

ただし、大きな注意点があります:これは、オーディオおよびビデオコーデックがサポートされている場合にのみ機能しますターゲット(MP4)コンテナーで、これはH.264/H.265およびたとえば、AAC。ただし、他の多くはそうではありません。また、MP4の字幕形式のサポートはMKVとは異なり、実際には非常に制限されているため、このコマンドは失敗する可能性があります。

このコマンドが機能しない場合、および入力が出力コンテナに間違ったコーデックを使用する場合、おそらく再エンコードする必要があります。この場合、コーデックは出力コンテナに適合します。

これが必要な理由を理解するには、 ビデオコーデックとコンテナの違い を学ぶことが重要です。これにより、コンテナの変更が機能する理由と、コンテナMP4およびMKVが実際にビデオコーデックとほとんど関係がない理由を理解するのに役立ちます。

とにかく、再エンコードが悪いのはなぜですか?

エンコード済みのビデオをエンコードする場合、は(通常)完全な品質を維持できません。これは、元の情報が情報を破棄することで既に圧縮されており、再度実行することで generation loss を導入しているためです。

多くの場合、たとえばサイズが変更されたとき、ビデオストリームを圧縮するために特定のビットレートが必要なとき、または元のビデオが何らかの理由で再生できないコーデックを使用しているときに、ビデオを再エンコードする必要があります。

したがって、MKVビデオをHandbrakeにロードし、それをx264で再エンコードすると、H.264エンコーダーHandbrakeがMP4コンテナーに保存し、それが何であれ品質を失うことになりますビットレートまたは品質係数を非常に高く設定して(実際に)違いが見えない場合を除きます。しかし、その後、ファイルサイズも大きくなります。

理想的なケースでは、ビデオを非圧縮ビデオに変換します。これにより品質は失われませんが、数分間のビデオ素材であっても数十ギガバイトのサイズのファイルが提供されます。

わかりましたが、本当に再エンコードする必要があります!

本当に再エンコードする必要がある場合は、平均ビットレートを設定せずに、 Constant Rate Factor を選択してください。品質"。 MP3の「可変ビットレート」と同じように、同じファイルサイズで、それらを必要とするビデオ部分にビットを費やし、全体的な品質を向上させます。

健全なCRF値は19から24で、低いほど「より良い」ことを意味します。したがって、19のレートファクターで試すことができます。また、「高」プロファイルを設定して、エンコーダがすべての機能を使用し、特定のビットレートの品質を最適化できるようにしてください。

85
slhck

これは私にとってとてもうまくいきます。以下は、ウィンドウ内のすべての.mkvを.mp4ファイルに変換するためのコードです。

  • あなたのパスにffmpegを追加する必要があるかもしれません。 ffmpegの実行ファイルへのフルパスD:\ apps\ffmpeg\bin\ffmpeg.exeを置くだけです。
  • ここでwindows用のffmpegをダウンロードしてください。
  • 使用法:その上に.mkvファイルをドロップします。それはディレクトリ全体を行います。

Convert.batというファイルに保存します。

for %%a in ("*.mkv") do ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
pause
4
MonkeyMagic