如何解决ffmpeg剪切出的视频时长不正确?

假设 input.mkv 总时长为35分钟,用以下命令剪切出的视频时长正确,为10分钟:

ffmpeg -ss 00:10:00 -to 00:20:00 -accurate_seek -i input.mkv -codec copy -avoid_negative_ts 1 -y output.mkv

用以下命令截取的视频剪切出的视频时长错误为15分钟,即 总时长(35分钟) 减去 -to(第20分钟)所得的时长:

ffmpeg -ss 00:10:00 -to 00:20:00 -accurate_seek -i input.mkv -vcodec libx264 -acodec aac -y output.mp4

多方搜索未果,求助!

阅读 14.7k
3 个回答
ffmpeg -ss 00:09:50 -i input.mkv -ss 00:10:00 -to 00:20:00 -copyts -codec copy -avoid_negative_ts 1 -y output.mkv

应当在-i的前后加-ss参数

建议详细阅读ffmpeg的seeking部分文档: https://trac.ffmpeg.org/wiki/...

参数位置不同含义完全不一样,另外转码压制和copy不转码方式也完全不同。还有就是大部分mkv通常使用H.264编码,如果确定mkv的视频流是H.264的话,完全不需要再调用libx264进行二压,直接-c copy cut.mp4就完事了

回到你的问题上,因为你把-ss参数的位置摆错了,详细解释请参考Note部分文档: https://trac.ffmpeg.org/wiki/...

尽管大部分命令参数位置和结果无关,但是ffmpeg的参数大部分是跟位置相关的

新手上路,请多包涵

ffmpeg -ss 00:10:00 -to 00:20:00 -accurate_seek -i input.mkv -codec copy -avoid_negative_ts 1 output.mkv

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏