ffmpeg 获取视频每帧的时间
时间: 2023-10-19 12:13:20 浏览: 297
通过ffmpeg获取视频文件的视频时间长度信息
可以使用FFmpeg命令行工具来获取视频每帧的时间。下面是一个示例命令:
```
ffmpeg -i video.mp4 -vf select='eq(pict_type\,I)' -f null - 2>&1 | grep 'pkt_pts_time' | awk '{print $NF}'
```
该命令使用`select`过滤器获取视频的关键帧,并使用null格式输出到标准输出。然后使用grep命令过滤出包含`pkt_pts_time`的行,并使用awk命令提取出时间戳。
输出的结果是视频每个关键帧的时间戳,可以使用相邻两个关键帧的时间戳之差来计算每帧的时间,例如:
```
ffmpeg -i video.mp4 -vf select='eq(pict_type\,I)' -f null - 2>&1 | grep 'pkt_pts_time' | awk '{print $NF}' > timestamps.txt
awk 'NR>1{print $0-p} {p=$0}' timestamps.txt > frame_times.txt
```
第一条命令将时间戳输出到文件`timestamps.txt`,第二条命令计算相邻两个时间戳之差,并输出到文件`frame_times.txt`。
需要注意的是,该方法只能获取关键帧的时间戳,因此计算得到的每帧时间仅仅是一个近似值。如果需要更精确的每帧时间,可以考虑使用视频帧率(FPS)来计算。
阅读全文