Python调用FFmpeg从视频中提取指定帧的方法

小满
小满
发布时间:2026-10-13 | 4人浏览过
原创

本文介绍如何利用Python结合FFmpeg工具从视频文件中提取指定时间点的图像帧。详细解析了FFmpeg命令行中-i、-ss、-t、-f等关键参数的含义,并提供了基于os.popen3和os.system的Python实现代码示例,帮助用户掌握视频处理中的基础抽帧技巧。

具体实现方式如下所示:

FFmpeg中文文档参考地址为:http://linux.51yip.com/search/ffmpeg

执行命令示例:ffmpeg -i test_baofeng.wmv -y -f image2 -ss 00:00:03 -vframes 1 myframe.jpg

另一条命令示例:ffmpeg -i test.mp4 -y -f mjpeg -ss 3 -t 1 test1.jpg

-f fmt:强制指定输出格式为fmt

-I filename:指定输入文件名为filename

-y:当输出文件已存在时,直接覆盖输出文件

-t duration:设置录制时长,支持hh:mm:ss[.xxx]格式

-ss position:定位到指定时间点开始处理,支持[-]hh:mm:ss[.xxx]格式

在Python中调用FFmpeg,通常使用subprocess模块或ffmpeg/libav库

--------------------Python通过FFmpeg抽帧---------------------

import os, sys
from PIL import Image
#open a pipe from a command 
a, b, c = os.popen3("ffmpeg -i test.avi")
out = c.read()
dp = out.index("Duration: ")
duration = out[dp+10:dp+out[dp:].index(",")]
hh, mm, ss = map(float, duration.split(":"))
#total time ss
total = (hh*60 + mm)*60 + ss
for i in xrange(9):
 t = int((i + 1) * total / 10)
 # ffmpeg -i test.mp4 -y -f mjpeg -ss 3 -t 1 test1.jpg 
 os.system("ffmpeg -i test.avi -y -f mjpeg -ss %s -t 1 frame%i.jpg" % (t, i))
 
"""
num=int(total-3)
i=0
for t in xrange(0,num,3):
 i = i+1
 # ffmpeg -i test.mp4 -y -f mjpeg -ss 3 -t 1 test1.jpg 
 os.system("ffmpeg -i test.avi -y -f mjpeg -ss %s -t 1 %sframe%i.jpg" % (t,t, i))
"""

以上关于Python通过FFmpeg从视频中提取帧的方法即为全部内容,供各位参考,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表