FFmpegによるH.264マルチパスエンコーディング


1

マルチパスでH.264でビデオをエンコードしたいです。私は試した :

ffmpeg -y -ss 00:00:12.0 -i "c:\ vid \ example.mkv" -vフレーム420 -vcodec libx264 -preset veryslow -refs 8 -b:vヌル

ffmpeg -y -ss 00:00:12.0 -i "c:\ vid \ example.mkv" -vframes 420 -vcodec libx264 -preset veryslow -refs 8 -b:v 1200k-codeコピー-pass 2 "c:\ vid \ encoded.mkv "

しかし、それはエラーメッセージを示しています:

/ dev / null:そのようなファイルまたはディレクトリはありません

ratecontrol_init:統計ファイルを開けません

出力ストリーム#0:0のエンコーダを開くときにエラーが発生しました - おそらくパラメータが正しくありません   bit_rate、rate、width、heightなど

私は何か悪いことをしましたか?私はところでFFmpegでマルチパスを使用する方法がわからない、任意のアイデアがエラーを修正する方法?


2パスを使用する必要がありますか?特定の出力ファイルサイズをターゲットにしているのでなければ、シングルパスを -crf 代わりに。見る FFmpeg Wiki:H.264ビデオエンコーディングガイド その詳細については。追加した理由 -refs 8?プリセットは参照を処理します。最後に、あなたは変えることができます -f h264-f matroska これは2番目のコマンドが使用するコンテナフォーマットです。
llogan

指定した場合は@LordNeckbeard -refs 8プリセットはめちゃくちゃになりますか?そして、あなたはcrfが2パスよりも優れているという意味ですか?
Happy Face

あなたは特定のファイルサイズに出力しようとしていますか? 2パスを使用している理由や追加している理由を説明していません -refs。追加中 -refs プリセットによって設定された参照を上書きする必要がありますが、そもそもなぜそれを設定しているのかわからないのですが。
llogan

@LordNeckbeard基本的に私は使用するような巨大なファイルサイズを持たずにできるだけロスレスでビデオをエンコードしたいです。 -qp 0 または -crf 0
Happy Face

それから許容できる品質とあなたが我慢するのが最も遅いプリセットを提供する最も高いcrf値を使用してください。しかし、ここでの2つの答えのうちの1つは、あなたが投稿した質問に対する特定のエラーに対する適切な解決策であるはずです。
llogan

回答:



0

やってみる

ffmpeg -y -ss 00:00:12.0 -i "c:\vid\example.mkv" -vframes 420 -vcodec libx264 -preset veryslow -refs 8 -b:v 1200k -an -pass 1 -f matroska dummy

ffmpeg -y -ss 00:00:12.0 -i "c:\vid\example.mkv" -vframes 420 -vcodec libx264 -preset veryslow -refs 8 -b:v 1200k -acodec copy -pass 2 "c:\vid\encoded.mkv"

2回目のパスの後、最初のパスで作成されたダミーファイルを削除します。


1
一時ファイルを作成する代わりに、Windowsユーザーは NUL。 @ LordNeckbeardの答えを見てください。
slhck

私は知っていますが、私はファイルパスの手がかりを逃しました、そして明白なOS指示がなかったので、私は普遍的に安全な方法に行きました。
Gyan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.