3

我有一个工具可以从 3D 应用程序中吐出视频,然后将各个视频连接起来制作一个序列。但声音似乎在序列中不同步(个别文件很好),并且在 VLC 和 Quicktime 中出现口吃。Windows 媒体播放器似乎可以处理它,这让我很惊讶,但它仍然不同步。我有两个 senarios,一个有效,一个无效,但我需要两个都工作:

工作:
得到已经创建出来的movs ...

转换成avi:
os.system( ffmpeg + " -i C:\clip.mov -sameq -r 24 -y C:\clip.avi")

连接到 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" )

连接到 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")

请让我知道我哪里出错了?

4

1 回答 1

3

原来它是切割过程中的“-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 正在使用的不同步的编解码器......并且修复了它!

希望这可以帮助别人。

于 2011-09-28T14:41:39.313 回答