我有一个H.264编码的视频,其关键帧大约相隔100毫秒。我观察到我不能寻求某些关键帧。在我进行搜索之后,播放头跳转到所需的时间(关键帧时间)以及一些如何向前或向后跳几毫秒。我对NetStream.time的跟踪输出看起来像是
ns.t:2.86
ns.t:2.86
ns.t:2.86
[10:12:01 GMT + 0100] VideoPlayerNetStream:NetStatusEvent - NetStream.Seek.Notify time:ns.time = 2.86
[10:12:02 GMT + 0100] VideoPlayerNetStream:Seek.Notify info.seekPoint:undefined
ns.t:2.76
ns.t:2.76
ns.t:2.76
ns.t:2.76
ns.t:2.8
ns.t:2.8
我正在寻求2.76(即2秒和76毫秒)。你可以看到它确实寻找所需的关键帧(在2.76处有一个关键帧),然后它跳到2.8。这导致跳帧功能的许多问题。 奇怪的是,它适用于某些关键帧,对某些人来说根本不起作用。视频会出现问题吗?有没有什么方法可以测试视频是否正确编码?在Google上搜索,表明人们在寻找非关键帧时遇到了问题。但在这里,我试图寻找关键帧。该应用程序适用于具有几秒钟的关键帧的视频。当视频编码不同以获得毫秒特征时,问题出现了。
我现在很长时间都在努力解决这个问题,如果我收到任何正确方向的提示/指示来解决它,我将不胜感激。
问候
Vrushali
答案 0 :(得分:2)
如帮助中所述:
在您调用其中一个搜索方法或设置playheadTime以导致搜索后,playheadTime属性可能不会立即具有预期值。对于渐进式下载,您只能搜索关键帧;因此,搜索会将您带到指定时间后第一个关键帧的时间。
[...]
正在寻找异步,因此如果您调用seek方法或设置playheadTime属性,则playheadTime 不会立即更新 。要在搜索完成后获取时间,侦听搜索事件,直到playheadTime属性更新后才会启动。
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/video/VideoPlayer.html#seek()
所以http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/video/VideoEvent.html#SEEKED 当播放头实际到达关键帧时,(应该是)调度。
换句话说,拥有少量关键帧会使搜索方法失效。 注意:对于流式视频而言,情况并非如此,其中播放头始终会立即设置为正确的时间/关键帧。如果启用了提示点,解决方案是“固定”视频的重要帧并使用seekToNavCuePoint(),seekToNextNavCuePoint()和seekToPrevNavCuePoint() 据我所知,那些更精确。