Python3利用ffmpeg针对视频进行一些操作
FFmpeg是个啥?
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。
首先去官网https://www.ffmpeg.org/download.html下载windows下的压缩包
解压缩后,配置一下环境变量
输入命令查看版本
ffmpeg -version
安装ffmpeg的python扩展,该扩展可以让你直接在python脚本中直接调用,而不需要单独运行命令
pip install ffmpeg-python
需要注意一点的是,有的情况调用该库会报错,这时需要将python安装目录下Lib文件夹的subprocess.py文件中大概656行中的shell参数改为True
获取视频详细信息
import ffmpeg
info = ffmpeg.probe("/xxx/xxx/test.mp4")
也可以只提取一些重要信息,比如视频时长,分辨率,宽高等
info = ffmpeg.probe(str(file))
vs = next(c for c in info['streams'] if c['codec_type'] == 'video')
self.duration_secs = float(vs['duration'])
self.format = info['format']['format_name']
self.codec_name = vs['codec_name']
self.width = vs['width']
self.height = vs['height']
self.num_frames = vs['nb_frames']
提取视频缩略图
def get_frames_by_times():
times = [5]
for time in times:
input_file = '/Users/didi/Desktop/ffmpeg/test.mp4'
output_file = '/Users/didi/Desktop/ffmpeg/image/image-' + str(time) + '.jpg'
out, err = (
ffmpeg
.input(input_file, ss=time)
.output(output_file, vframes='1', f='image2')
.run(quiet=False, overwrite_output=True)
)
if out == b'':
print('do nothing')
将视频的片段提取为动图
ffmpeg -ss 00:00:03 -t 3 -i Test.mov -s 640x360 -r 15 dongtu.gif