使用FFmpeg实现精确剪切视频

导读:本篇文章讲解 使用FFmpeg实现精确剪切视频,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

 

基本的剪切命令:

用 -ss 和 -t 选项, 从第 30 秒开始,向后截取 10 秒的视频,并保存:

  1. ffmpeg -i input.wmv -ss 00:00:30.0 -c copy -t 00:00:10.0 -codec copy output.wmv

  2. ffmpeg -i input.wmv -ss 30 -c copy -t 10  -codec copy output.wmv

达成相同效果,也可以用 -ss 和 -to 选项,

ffmpeg -i input.wmv -ss 30 -c copy -to 40 -codec copy  output.wmv

但是这样剪切的视频不精准,剪切的位置会有重复的地方

根据网上资料,加入了-accurate_seek参数在-i前面和-avoid_negative_ts 1参数

ffmpeg -ss {0} -to {1} -accurate_seek -i {2}  -codec copy  -avoid_negative_ts 1  -y {3}

 

结果是视频头部的剪裁精度基本满意但是尾部还是不准,第二段向前偏离了5s,这样肯定是不行的

 

如何实现剪切的位置,前后两端都很精确,经过查找后,有以下三种方式可行:

第一种:在剪切前调整视频关键帧的位置,再去剪切,

关键参数 : -g 1 -keyint_min 2 

例子:

ffmpeg -y -i 美丽的神话.mp4 -ss 0 -t 295 -c:a copy -vcodec libx264 -keyint_min 2 -g 1  -y 11.mp4

第二种:经过查阅资料,发现ffmpeg在进行转码的时候会自动精准时间,即不使用-codec copy编码,所以我们可以在剪切时,进行编码输出

-ss {0} -to {1} -accurate_seek -i {2} -c:v libx264  -avoid_negative_ts 1  -y {3}

 

第三种:据说OpenCV截取的视频是极为精准的但是没有声音,那么就用OpenCV截取视频,ffmpeg截取音频,然后合并音频和视频

使用OpenCV的VideoWriter.write写入视频

对视频压缩为音频

ffmpeg -y -I filename -vn -ar 44100 -ac  -ab 192 -f mp3

然后切割音频

ffmpeg -y -vn -ss start -t duration -i filenam -acodec copy

最后合并音频视频

ffmpeg -y -i filename -i filename2 -vcode copy -acodec copy

 

不过本人并未尝试,记录下,以备不时之需!

 

 

 

参考资料:https://zhuanlan.zhihu.com/p/28008666

https://www.bilibili.com/read/cv3173855/

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/51852.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!