赞
踩
之前基于ffmpeg
做二次开发,完成常见的视频处理功能,并用ffmpeg
命令行做兜底。在此基础上,还做一个转码接入和调度系统对外提供服务。有个功能需要是这样的:快速从指定的视频中裁剪某一时间范围的子视频, 两个要求:1. 要快,不能像转码一样耗时;2.要精确,剪辑的时候能指定从哪一秒开始,到哪一秒结束。
用ffmpeg
很容易从一个长视频剪辑出一段小视频。比如命令ffmpeg -i input.mp4 -ss 00:10:03 -t 00:03:00 -vcodec copy -acodec copy output.mp4
就是从input.mp4
的第10分钟03秒开始剪辑出一个3分钟的视频并且保存为output.mp4
文件。参数-vcodec copy -acodec copy
就是直接拷贝原始视频的音视频流,不进行编解码。虽然上面的方法很方便,但有一个致命的缺陷:画面在一开始会卡住(但声音一直是正常的),几秒后画面才正常滚动。下面视频是一个例子。
究其原因,剪辑的开始时间落在视频GOP
的中间位置而不是第一个I
帧。稍微了解过视频编码的同学应该都听过I
、B
、P
帧。简单来说,I
帧是一张完整的图像,P
帧则根据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。