核心视频专家,我正在为.mov文件创建自定义视频播放器。我有.mov解析器工作和使用QTCoreVideo101示例我正在尝试播放视频。
我遇到的问题是显示链接getFrameForTime我不知道如何使用时间值来查找正确的帧。
CVTimeStamp中包含的值对我没有任何意义。以下是1秒视频请求的值示例。任何人都可以解释我如何使用这些值在.mov文件中找到正确的帧吗?
前三个请求 - CVTimeStamp的值
视频时间:489150134353920.000000主持人时间:2026048145326080.000000 videoTimeScale:241500000.000000 rateScalar:1.000000 videoRefreshPeriod:4028320.000000
视频时间:489150201462784.000000主持人时间:2026048279543808.000000 videoTimeScale:241500000.000000 rateScalar:0.999985 videoRefreshPeriod:4028320.000000
视频时间:489156643913728.000000主持人时间:2026074988871680.000000 videoTimeScale:241500000.000000 rateScalar:1.000000 videoRefreshPeriod:4028320.000000
答案 0 :(得分:1)
CVTimeStamp
。 videoTimeScale
是第二个分成的单位数。因此,对于30 fps视频,它需要至少30(尽管它可以是30 - 60,120,30000等的任何倍数)。 videoTime
是当前帧(或字段)开始的时间刻度中的时间。因此,如果您的时基为30000,并且您位于第15帧,则videoTimeScale
将为30000,而您的videoTime
将为15000。
您可以通过查看smpteTime
字段并查看它是否符合您的预期来检查您是否正确解释了该值。在上面的示例中,它将是0小时,0分钟,0秒,15帧(或00:00:00:15)。
有没有理由可以使用操作系统的内置视频解码设备?