9

ffmpeg での itsoffset の使用に関して、誰かがいくつかの指針を与えることができれば、本当に感謝しています。この件に関する多くの投稿を読みましたが、その中にはオーディオとビデオを -itsoffset で再同期する方法を非常に明確に説明しているものもありますが、うまくいきませんでした。私のaviファイルは、2回目のパスに次のコマンドを使用して、2回のパスでffmpegでエンコードされています。

ffmpeg -i whole-vts_01.avs -pass 2 -y -vcodec libxvid -vtag XVID -b:v 1300K -g 240 -trellis 2 -mbd rd -flags +mv4+aic -acodec ac3 -ac 2 -ar 48000 -b:a 128k output.avi

なんらかの理由で、ビデオが 1 秒遅れてしまいます (または音声が 1 秒早くなります)。頻度は高くありませんが、たまに見かけます。他の試みの中で、私は次のことを試しました:

(1) ffmpeg -i output.avi -itsoffset 00:00:01.0 -i output.avi -vcodec copy -acodec copy -map 0:0 -map 1:1 output-resynched.avi
(2) ffmpeg -i output.avi -itsoffset 00:00:01.0 -i output.ac3 -vcodec copy -acodec copy -map 0:0 -map 1:0 output-resynched2.avi
(3) ffmpeg -itsoffset -00:00:01.00 -i output.avi output-resynched8.avi
(4) ffmpeg -i output.avi -itsoffset -1.0 -i output.avi -vcodec copy -acodec copy -map 0:1 -map 1:0 output-resynched13.avi

結果は次のとおりです。

  1. 音声が文字化けし、1 時間 41 分の長さに対してわずか 5 分 35 秒です。
  2. (Output.ac3 は output.avi のオーディオ コンポーネントです) ビデオとオーディオはオリジナルと同じで、オフセットが機能しませんでした
  3. オーディオはシフトされましたが、元のエンコード パラメータはデフォルトのものに置き換えられました (予想どおり)。
  4. 音声が文字化けし、1 時間 41 分に対してわずか 9 分 56 秒の長さです。

多くの人が説明し、明らかに上記のプロセスを使用しているようですが、私にはうまくいかないようです. 明らかな何かが欠けていますか?-itsoffset を使用できるようにしたいと考えています。これは、回避策よりもクリーンです。

FWIW、ここでは、目的の結果を得る別のより長い方法を示します。

まず、-ss を使用して、シフトされたビデオのみのファイルを作成します。

ffmpeg -i output.avi -ss 1.0 -vcodec copy -an oupput_videoshifted.avi

次に、オーディオを抽出します。

ffmpeg -i output.avi -vn -acodec copy outputaudioonly.ac3

最後に、両方のコンポーネントを再多重化します。

ffmpeg -i output_videoshifted.avi -i output_audioonly.ac3 -vcodec copy -acodec copy -map 0:0 -map 1:0 output-resynched14.avi

プロセスは機能し、十分に高速ですが、1 パス -itsoffset ソリューションを使用したいと思います。

4

2 に答える 2

5

これが私がやったことであり、それは私のために働きます

最初の入力設定 -i と 2 番目の入力は、同じ 1 つのビデオ ファイルから取得されます。

最初の入力ビデオで 1 秒遅延し、2 番目の入力オーディオは単にコピーを作成します

ffmpeg -y -itsoffset 00:00:01.000 -i "d:\Video1.mp4" -i "d:\Video1.mp4"
 -map 0:v -map 1:a -vcodec copy -acodec copy
 -f mp4 -threads 2 -v warning "Video2.mp4"

2番目の入力オーディオで1秒遅延し、最初の入力ビデオはコピーを作成するだけです

ffmpeg -y -i "d:\Video1.mp4" -itsoffset 00:00:01.000 -i "d:\Video1.mp4"
 -map 0:v -map 1:a -vcodec copy -acodec copy
 -f mp4 -threads 2 -v warning "Video2.mp4"
于 2012-06-21T11:56:53.960 に答える