audio - ffmpeg 流偏移命令(-itsoffset)不起作用

标签 audio ffmpeg sync

如果有人能提供一些关于在 ffmpeg 中使用 itsoffset 的指示,我将不胜感激。我已经阅读了很多关于这个主题的帖子,其中一些非常清楚地解释了如何使用 -itsoffset 重新同步音频和视频,但我无法让它工作。
我的 avi 文件用 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

结果如下:
  • 音频出现乱码,只有 5m 35 s 长,而 1h 41m。
  • (Output.ac3 是 output.avi 的音频组件) 视频和音频
    与原版相同,偏移无效
  • 音频确实发生了变化,但原始编码参数替换为默认参数(如预期的那样)。
  • 音频出现乱码,只有 9m 56s 长,而 1h 41m。

  • 我看到很多人解释,并且显然使用了上述过程,但它似乎对我不起作用。我错过了一些明显的东西吗?我非常希望能够使用 -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
    

    该过程有效,速度足够快,但我真的更喜欢使用一次性 -itsoffset 解决方案。

    最佳答案

    这是我所做的,它对我有用

    第一个输入设置 -i 和第二个输入来自同一个视频文件。

    第一个输入视频延迟 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"
    

    关于audio - ffmpeg 流偏移命令(-itsoffset)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10116430/

    相关文章:

    php - Flash和PHP库在浏览器中录制声音并保存到.wav文件?

    javascript - 如何使用 Javascript 将多个音频文件附加到当前正在播放的音频中?

    php - ffmpeg命令视频和音频的输出视频文件不匹配

    audio - 如何在 Windows Vista 中以编程方式启动麦克风音量控制面板?

    audio - 网络音频API和直播延迟

    perl - 为什么从 Perl 守护程序运行时 FFMpeg 会在五秒后停止?

    python - 如何在 ffmpeg-python 中合并视频和音频文件

    hadoop - 如何将Hadoop配置文件同步到多个节点?

    java - aspectj 中的同步切入点

    c# - 无论如何提供一个 ics 日历文件,它将自动与更新保持同步