Flv回放playheadupdate间隔,以毫秒为单位,即寻找非关键帧

时间:2011-03-23 11:47:37

标签: flash actionscript-3 flv flvplayback seek

我无法在毫秒秒范围内捕捉播放头更新事件。这是关于加载的flv电影的FLV播放。 根据文档,seek()函数寻求关键帧,它需要时间作为输入,精确度为毫秒。 我有一个称为下一帧的功能,我暂停视频并尝试寻找给定的playheadTime

    function onNextFrame(event:Event)
    {
        if (video1.playing)
        {
            video1.stop();
        }
        playHeadTime=Number(playHeadTime.toFixed(2));
        trace("Calling nextFrame :::",playHeadTime);
        trace(" Before seek ",video1.playheadTime);
        video1.seek(playHeadTime);
        playHeadTime +=  0.1;
    }

我还有一个搜索事件,它不会针对每次搜索进行更新,而是仅针对flv视频中关键帧的出现进行更新

function onseeked(event:Event)
        {
            trace("seeked",video1.playheadTime);
        }

我还有一个播放头更新事件来跟踪播放头的移动 但是这不会更新使用下一个帧功能。它仅在视频正常播放时有效。

video1.playheadUpdateInterval = 30;
video1.seekToPrevOffset = 0.01;
video1.addEventListener(VideoEvent.SEEKED,onseeked);
video1.addEventListener(VideoEvent.PLAYHEAD_UPDATE,onPlayHeadUpdate);
function onseeked(event:Event)
        {
            trace("seeked",video1.playheadTime);
        }

我的问题是

  • 当视频暂停/停止并寻找一段时间时,如何以毫秒精度更新播放头。
  • 当搜索似乎只对关键帧起作用时,我如何首先更新播放头。我如何获得非关键帧时间的搜索?

关于此的相关讨论但也没有提供任何解决方案

How to jump to a non-keyframe in a flv player


更新: 即使使用netstream.seek(),每次连续调用函数都不会显示video.playheadtime的变化。它的工作方式与video.seek()的工作方式相同。

video.playheadtime=0.1

这种分配也不能使播放头属性更改/更新。

我们如何实现快进/快退功能?

1 个答案:

答案 0 :(得分:0)

检查flv元数据是否有canseekontime = false
还要检查NetStream.seek(12.222/*milliseconds/1000*/)是否适用于同一个flv