提问人:Jco 提问时间:11/13/2023 最后编辑:Jco 更新时间:11/13/2023 访问量:24
为视频文件创建的媒体并提取其中每帧的时间戳时出现问题
Issue with media created of a video file and extracting the timestamp of each frame in it
问:
我有两件事要问或确认。
我的目标是根据创建的媒体获取视频中每一帧的确切日期和时间戳,并使用 cv2.putText() 将其显示在输出视频中。
为此,我的计划是获取创建的视频文件媒体的 UNIX 格式时间戳和每帧的位置(以毫秒为单位),将其除以 1000 转换为秒,然后将其添加到媒体创建的 UNIX 格式时间戳中。
基本上对于每一帧,计划是这样的:UNIX 格式的媒体创建值 + cap.get(cv2.CAP_PROP_POS_MSEC)/1000 = 第 n 帧的日期和时间戳
这是对应的代码:
from win32com.propsys import propsys, pscon # excluded from the for loop, only imported once
# Get media created UNIX-formatted timestamp of the input video
properties = propsys.SHGetPropertyStoreFromParsingName(videofilepath.replace('/', '\\'))
dt_property = properties.GetValue(pscon.PKEY_Media_DateEncoded).GetValue()
input_video_creation_timestamp_unix = dt_property.timestamp()
# Calculate the date and timestamp of the frame then display it using cv2.putText(). Please do note that this is applied to each frame of the input video
im0 = cv2.putText(im0, f'{datetime.fromtimestamp(input_video_creation_timestamp_unix + (vid_cap.get(cv2.CAP_PROP_POS_MSEC)/1000))}', (50,150), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)
但是,我在创建的媒体的价值和获取视频中帧的时间戳方面遇到了问题。
1.) 我正在从 TP Link 的 Tapo TC70 获取输入视频。Properties>Details 中显示的创建的媒体与 dt_property 值不一致。例如,参考这张图片
如您所见,家庭安全摄像头显示的日期和时间戳延迟了大约两 (2) 秒。这正常吗,您知道为什么会发生这种情况的原因以及我可以做的可能修复吗?
2.) 第二个问题如下图所示:计算 2 分钟视频的最终日期和时间戳时,大约有一秒的差异。您知道我该如何解决这个问题以将确切的日期和时间戳显示为 Tapo TC70 显示的日期和时间戳吗?
如果您需要它们或缺少某些内容,我将提供有关我的问题的更多详细信息。
我希望得到你的答复。谢谢。
答: 暂无答案
评论