ffmpeg 声音与 -concat 或 -ss 不同步
Posted
技术标签:
【中文标题】ffmpeg 声音与 -concat 或 -ss 不同步【英文标题】:ffmpeg Sound going out of sync with -concat or -ss 【发布时间】:2011-11-15 08:02:26 【问题描述】:我有一个工具,它可以从 3D 应用程序中输出视频,然后将各个视频连接起来制作一个序列。但声音似乎在序列中不同步(个别文件很好),并且在 VLC 和 Quicktime 中出现口吃。 Windows 媒体播放器似乎可以让我感到惊讶,但它仍然不同步。我有两个场景,一个有效,一个无效,但我需要两个都工作:
工作: 得到已经创建出来的 movs...
转成avi:os.system( ffmpeg + " -i C:\clip.mov -sameq -r 24 -y C:\clip.avi")
concat 到 avi 序列:os.system( ffmpeg + ''' -i concat: C:\clip.avi|C:\clip1.avi|C:\clip2.avi -sameq -r 24 -y C:\sequence.avi''' )
将序列转换为mov:os.system( ffmpeg + " -i C:\sequence.avi -sameq -r 24 -y C:\sequence.mov")
不工作: 从 3D 程序创建个人 avi...
剪裁到正确的长度:os.system(ffmpeg + " -i C:\clip.avi -sameq -r 24 -ss " + startTime + " -vframes " + totalFrames + " -y C:\clip.avi" )
concat 到 avi 序列:os.system( ffmpeg + ''' -i concat: C:\clip.avi|C:\clip1.avi|C:\clip2.avi -sameq -r 24 -y C:\sequence.avi''' )
将序列转换为mov:
os.system( ffmpeg + " -i C:\sequence.avi -sameq -r 24 -y C:\sequence.mov")
将单个 avi 转换为 mov:
os.system( ffmpeg + " -i C:\clip.avi-sameq -r 24 -y C:\clip.mov")
请告诉我哪里出错了?
【问题讨论】:
【参考方案1】:原来它是切割过程中的“-sameq”标志。弄乱了音频所以我只是改变了
os.system(ffmpeg + " -i C:\clip.avi -sameq -r 24 -ss " + startTime + " -vframes " + totalFrames + " -y C:\clip.avi" )
到
os.system(ffmpeg + " -i C:\clip.avi -sameq -r 24 - acodec pcm_s16le -ss " + startTime + " -vframes " + totalFrames + " -y C:\clip.avi" )
- 强制 ffmpeg 使用 pcm_s16le 作为音频编解码器,而不是 -sameq 使用的不同步的编解码器......并且修复了它!
希望这可以帮助其他人。
【讨论】:
以上是关于ffmpeg 声音与 -concat 或 -ss 不同步的主要内容,如果未能解决你的问题,请参考以下文章
如何从 linux USB 捕获设备与 ffmpeg 同时捕获音频和视频