NetStream 创建无缝动态播放列表 AS3



我需要在AS3中动态创建一个具有近乎无缝过渡的播放列表。

我尝试将 play2 命令与 一起使用。附加。它确实在非动态设置中工作。但是我所拥有的是,在应用程序启动时,我知道第一个视频是什么,然后,在该视频结束之前,我将知道要播放的下一个视频是什么,依此类推,直到我收到我播放了最后一个视频的消息。

所以,一开始,我不知道会有多少视频,也不知道要播放的文件的顺序。

如果我尝试在流已经在播放时使用 APPEND 添加视频,它似乎会替换当前播放的视频,而不是仅在当前视频的末尾开始缓冲和播放。

我也不能使用appendBytes,因为视频文件必须是h.264格式

任何人的帮助将不胜感激,因为我不知道该朝哪个方向看了。如有必要,我可以提供更多细节。

谢谢。

这是一个即兴的答案,但逻辑是合理的,应该给你另一个方向。

首先,概念:使用Flash视频,您可以同时发生2个完全独立的过程:

  1. 缓冲/加载

  2. 视频播放

因此,播放和流媒体可以并且确实同时发生,但分开,这是逻辑应该挂钩的地方。

因此,关于实现:将有一个主要播放器和一个辅助(影子)播放器/加载器。主要播放器应负责加载初始视频并播放它。

[魔法来了]

一旦主播放器中的缓冲完成,由 NetStream 对象上的 NetStream.Buffer.Flush NetStatusEvent 确定。然后开始在影子播放器中缓冲以下视频,初始化连接并使用NetStream.Pause开始缓冲,但不播放,而主播放器则播放。

当在主播放器中完成播放(由NetStream.Play.Stop事件确定)时,您可以将变量(NetConnention,NetStream和Video)(始终通过引用传递)从影子播放器传递到主要播放器,它应该几乎无缝地继续。然后从影子播放器中清除值并重复上述过程,等待缓冲完成,然后再加载下一个视频;无穷无尽。

或者,你可以有一个更平衡的方法 - 尽管在我看来这将更加资源密集(因为你会有2个视频播放器持续活跃) - 并且有一个主要和次要播放器,他们交替。一旦一个缓冲区完成,您就开始缓冲下一个缓冲区,一旦播放完成,您就从一个播放器切换到另一个播放器。

组装起来会非常繁琐(因此缺少示例,因为它很复杂,本质上,您的工作;)因为您将处理 2 组网络连接、NetStreams 和视频 - 这很复杂,很多事件需要处理......

但是,我不认为play2()是你的答案,它主要用于重新唤醒断开/关闭的网络连接。这里面临的问题是2个独立的NetConnections和NetStreams的无缝异步。

如果您

仍然需要这里的帮助/解释,请通知我,这是一个有点旧的问答,如果您已经继续前进,我不想写几百行代码......

最好,a.)

最新更新