【发布时间】:2020-11-12 02:43:48
【问题描述】:
我正在使用 python OpenCV 从具有可变帧速率的视频文件中读取帧。
我需要了解帧之间的挂墙时间如何变化(即我希望能够在每一帧上写入时间戳)。我的理解是,底层视频格式存储每帧持续多长时间,即视频文件包含告诉视频播放器在移动到下一帧之前应该显示给定帧多长时间的信息。 p>
我想使用 python OpenCV 接口以编程方式访问这些数据。这可能看起来像的一个示例(不起作用)是:
import numpy as np
import cv2 as cv
cap = cv.VideoCapture('my_variable_frame_rate_video.mp4')
while cap.isOpened():
ret, frame = cap.read()
frame_length_ms = ret.frame_length() # obviously doesn't work
print("The length of the frame in ms is {}".format(frame_length_ms))
# Should print: The length of the frame in ms is 23
不起作用的事情
- 从捕获设备读取源帧速率:
fps = cap.get(cv2.cv.CV_CAP_PROP_FPS)
- 计算总帧数:
fps = cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)/total_length
这两个都不起作用,因为我们正在处理可变帧速率
【问题讨论】:
标签: python opencv video-capture frame-rate