我们已经使用旧版本的ffmpeg一段时间了,现在我们需要升级到更新版本(例如2.6),我们在将.mov转换为.mp4时遇到问题。
例如,我有一个.mov视频文件,它有两个视频和音频流,两者都有start_time = 0,当我使用它转换它时:
ffmpeg -i my_file.mov my_file.mp4
输出mp4有一个音频流,其start_time = -0.021333。
FORMAT部分,如ffprobe -show_format -show_streams my_file.mp4所示 也有start_time = -0.021333
我们使用的以前版本的ffmpeg没有这个问题...
当我们使用<在Web浏览器中播放输出mp4文件时视频>它在播放时一切都很好,但是如果我们暂停视频并且在这里和那里寻找,我们会注意到所有帧都被关闭了。第一帧是重复的,最后一帧是丢失的!
换句话说:
dom.currentTime = 0 shows the first frame
dom.currentTime = 1/24 (fps is 24) shows the first frame again
dom.currentTime = 2/24 shows the second frame instead of the third frame
dom.currentTime = 3/24 shows the third frame instead of the fourth frame
...
我们认为这是由字段start_time = -0.021333
引起的这对我们来说是个主要问题......
它在chrome和firefox上的重复,但不知何故safari没有这个问题......
通过Google搜索后,我们发现我们并不是唯一一个遇到此问题的人,但目前还不清楚解决方案是什么。
有人建议使用" -c:副本"参数和它在一些文件上工作但在其他一些文件上出错:
无法为输出文件#0写入标头(编解码器参数不正确?):参数无效
所以这似乎不是一个强有力的解决方案......
任何帮助都将不胜感激。
答案 0 :(得分:2)
您可以尝试完全避免使用否定TS
ffmpeg -i my_file.mov -avoid_negative_ts make_zero my_file.mp4
使用您的输入文件,我运行了此命令,
ffmpeg -i AnimalTrancoding_v001_Shot0020.mov out.mp4
在输出上运行ffprobe,
ffprobe -show_entries format=start_time:stream=start_time -of compact out.mp4
我看到了
stream|start_time=0.000000
stream|start_time=0.000000
stream|start_time=0.000000
format|start_time=0.000000
比较前几帧没有显示任何与源相关的重复或丢失。
我正在运行最近的每晚构建(2016年5月)。