2011-02-01 168 views
1

我有一个H.264编码的视频,它的关键帧距离大约100毫秒。我观察到我无法寻求某些关键帧。在我寻找之后,播放头跳转到所需的时间(关键帧时间),以及它跳跃几毫秒前后的跳跃。我对NetStream.time跟踪输出中看起来像NetStream.seek以毫秒为单位

ns.t:2.86
ns.t:2.86
ns.t:2.86
[10时12分01秒GMT + 0100] VideoPlayerNetStream:NetStatusEvent - NetStream的。 Seek.Notify时间:ns.time = 2.86
[10时12分02秒GMT + 0100] VideoPlayerNetStream:Seek.Notify info.seekPoint:未定义
ns.t:2.76
ns.t:2.76
纳秒。 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如帮助提到

回答

2

playheadTime属性可能没有你打电话后立即的寻求方法之一期望值或者设置playheadTime以引发搜索。对于渐进式下载,您只能寻找关键帧;因此,在指定的时间之后,寻找会将您带到第一个关键帧的时间。

[...]

寻求的是异步,因此,如果调用搜索方法或者设置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 是(应该是)派遣播放头实际到达关键帧。

换句话说

,有几个关键帧,使寻求方法inacurate。 注意:对于播放头总是立即设置为正确的时间/关键帧的流式视频,这不是真的。

如果启用cuePoints等,一个解决办法是“固定”的视频的重要画面,并使用seekToNavCuePoint(),seekToNextNavCuePoint()和seekToPrevNavCuePoint() 据我能记得那些更acurate的。

+0

我的问题是,播放头的时间不会获取更新为期望的值,但随后又改变(由几毫秒的时间向前移动)虽然视频处于暂停状态。这个新时间也不是关键帧时间。所以即使搜索完成后,播放头也不会显示预期值。就像我在问题中所描述的那样,我在时间2.76中寻找关键帧。播放头时间属性更新为2.76,然后更改为2.8。下一次我搜索前一帧时,我再次获得前一帧的2.76(2.76 <2.8)。所以我必须再次寻求2.76。但它永远不会达到2.76,而是2.8。 – Vrushali 2011-02-01 16:26:19

相关问题