2012-04-12 169 views
8

我真的很感激,如果有人可以提供一些关于使用foffset与ffmpeg的指针。我已经阅读了许多关于这个主题的文章,其中一些非常清楚地解释了如何用-itsoffset重新同步音频和视频,但是我一直无法使它工作。 我的AVI文件进行编码的ffmpeg,在两遍,使用下面的命令用于第二遍:ffmpeg流偏移命令(-itsoffset)不工作

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. 音频乱码只有5m 35秒长与1H41米。
  2. (Output.ac3是output.avi的音频组件)视频和音频 等同于原来,偏移没有工作
  3. 音频没有得到转移,但是默认的替换原始编码参数(如预期)。
  4. 音频出现乱码,只有9米56秒长,1小时41米。

我看到许多人解释,显然使用上述过程,但它似乎并没有为我工作。我错过了明显的东西吗?我非常希望能够使用-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 

这个过程很有效,但我真的更喜欢使用一个pass -itsoffset解决方案。

+0

有一个[open bug](http://roundup.libav.org/issue359)和'-itsoffset'标志,可能与你看到的问题有关。另一方面,乱码和截断的音频听起来像是更严重的事情是错误的。如果这仍然是一个问题,你使用的是什么版本的FFmpeg? – blahdiblah 2012-08-03 23:23:23

回答

4

这里是我做的,它为我

工作的第一个输入设置-i和第二输入是来自同一个视频文件。在第1输入影像

延迟1秒,第二输入音频只是做一个副本

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" 
在第二输入音频

延迟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" 
0

该问题位于-vcodec copy -acodec copy上,因为该移位仅适用于关键帧。我曾经也有过一样的问题。

只是不要复制(音频/)视频,尝试用-itsoffset的事情,但使用

-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 

重新编码。它应该工作。