python ffmpeg 获取视频每帧的时间
时间: 2023-08-08 08:06:55 浏览: 265
基于Python实现的多线程视频抽帧脚本
可以使用Python的FFmpeg库(pyffmpeg)来获取视频每帧的时间。下面是一个示例代码:
```python
import ffmpeg
# 打开视频文件
video = ffmpeg.input('video.mp4')
# 构建视频流过滤器
filter = 'select=\'eq(pict_type\\,I)\''
# 获取视频每个关键帧的时间戳
out, _ = (
video
.output('null', format='null', vframes='100', filter=filter)
.run(capture_stdout=True)
)
timestamps = [float(line) for line in out.decode().split('\n') if line]
# 计算每帧的时间
times = [timestamps[i+1]-timestamps[i] for i in range(len(timestamps)-1)]
```
代码中使用`ffmpeg.input()`打开视频文件,并使用`select`过滤器获取视频的关键帧。然后使用`output()`方法输出到null格式(因为不需要实际输出),并指定获取前100帧。最后通过计算关键帧之间的时间差,得到每帧的时间。
需要注意的是,该方法只能获取关键帧的时间戳,因此计算得到的每帧时间仅仅是一个近似值。如果需要更精确的每帧时间,可以考虑使用视频帧率(FPS)来计算。
阅读全文