重置FLVPlayback组件以使用相同的源进行播放

时间:2009-12-31 15:13:36

标签: flash video flv flvplayback

我正在使用相同的FLVPlayback组件在我正在构建的大型Flash网站中播放许多页面转换视频。在每次转换时,我使用myFLVPlayback.source设置组件的源并在继续每个页面转换之前监听fl.video.VideoEvent.READY事件。只要每对页面之间的过渡使用不同的视频,这种方法就可以正常工作。

不幸的是,当需要为两个连续转换调用相同的页面到页面转换视频时,我遇到了问题。连续两次播放同一视频时,将组件的source属性设置为已有的值似乎没有做任何事情,这意味着我的fl.video.VideoEvent.READY听众永远不会开火。我可以做一些hackish,比如将source设置为一个小的,从未使用过的其他FLV,然后再将它设置为我实际用于过渡的FLV,作为“重置”组件的一种方法,但是我我想知道在这样的情况下最佳实践是什么(只要FLVPlaybackComponent之类的最佳实践可以用直面讨论)。

我已经仔细考虑了组件的livedocs,但却空手而归,并且在这个后期手动使用NetStream,NetConnection和Video对象并不是一个真正的选择。

2 个答案:

答案 0 :(得分:3)

我建议使用一个线束来检查您要播放的URL是否与之前的转换相同,如果是,则只搜索(0)(即回放视频)而不是重置源。重置源可能会强制重新播放视频(例如,如果禁用了浏览器缓存),这可能不是您想要的。

if (myFlvPlayback.source == nextTransitionUrl) {
  myFlvPlayback.seek(0);
  startTransition();
}
else {
  myFlvPlayback.source = nextTransitionUrl;
  // The "ready" event will fire, and your event handler will start playback
}

查看FLVPlayback.seek()方法。

干杯

答案 1 :(得分:0)

看起来这个问题已经解决了一段时间,但我认为无论如何我都会说话。要准确模拟您描述的行为,您可以检查源是否= =到下一个URL,然后直接在flvPlayback实例上调用dispatchEvent。这样它的行为就像URL不同,并且您必须编写的唯一手动干预只是检查URL是否为==。