use*_*081 5 opengl quicktime core-video .mov
核心视频专家,我正在为.mov文件创建自定义视频播放器。我正在使用.mov解析器,并使用QTCoreVideo101示例来尝试播放视频。
我的问题是显示链接getFrameForTime我不知道如何使用时间值来找到正确的帧。
CVTimeStamp中包含的值对我来说没有任何意义。以下是1秒视频请求的值示例。谁能解释我如何使用这些值在.mov文件中找到正确的帧?
前三个请求-CVTimeStamp的值
视频时间:489150134353920.000000主机时间:2026048145326080.000000视频时间比例:241500000.000000速率标量:1.000000视频刷新时间:4028320.000000
视频时间:489150201462784.000000主机时间:2026048279543808.000000视频时间比例:241500000.000000速率标量:0.999985视频刷新时间:4028320.000000
视频时间:489156643913728.000000主机时间:2026074988871680.000000视频时间比例:241500000.000000速率标量:1.000000视频刷新时间:4028320.000000
CVTimeStampCVTimeStamp 参考文档中对此进行了解释。是videoTimeScale一秒分为的单位数。因此,对于 30 fps 视频,它需要至少为 30(尽管它可以是 30 - 60、120、30000 等的任意倍数)。是videoTime时间刻度中当前帧(或场)开始的时间。因此,如果您的时基是 30000,并且您位于第 15 帧,则您的时基videoTimeScale将为 30000,而您的时videoTime基将为 15000。
您可以通过检查该smpteTime字段并查看它是否符合您的预期来检查您是否正确解释了该值。在上面的示例中,它将是 0 小时、0 分钟、0 秒、15 帧(或 00:00:00:15)。
是否有理由可以只使用操作系统的内置视频解码功能?