3

我正在做一个项目,我们背靠背播放多个视频,如果我们通过提供流 url 以正常方式加载它们,每次开始下一个视频时都会有加载延迟。

我浏览了 Adob​​e 的 Flash 和 Flex 文档,但找不到预加载视频的方法。在此应用程序中嵌入它们是不可行的。理想情况下,我们会预先加载它们,同时显示进度条或其他短视频,并且只有在所有视频加载完毕后才开始播放视频。

我不习惯向其他人询问有关编程的问题,我是 RTFM,但我发现缺少 Adob​​e 文档,而且谷歌搜索 flash/flex 问题很困难。有很多东西要筛选,我找不到相关的技术/解决方案。

至于 Flex/Flash,我对其中一个或两者的解决方案都感兴趣。也许它是一样的,因为它是actionscript?

4

2 回答 2

3

您可以尝试查看该bulk-loader项目,看看它是否对此有用。

摘自首页:

“BulkLoader 是一个用 Actionscript 3 (AS3) 编写的最小库,旨在使加载和管理复杂的加载要求更容易和更快。BulkLoader 采用更动态、更少架构重的方法 [原文如此]。很少导入并大量使用 AS3 的动态功能,BulkLoader 有一种不会妨碍您的单线感觉。”

于 2008-12-19T06:55:49.863 回答
3

这应该非常简单。对于直接闪光,请使用 fl.video。VideoPlayer或 fl.video。FLV 播放。创建多个播放器,每个视频一个,在每个播放器上调用 load() 并使用源视频的 url。然后侦听 VideoProgressEvent.PROGRESS 事件以了解视频何时加载。最后,您可以将视频连续附加到可视组件并调用 play() 来播放它们。

示例代码(未测试):

var video1:VideoPlayer = new VideoPlayer();
video1.load("http://example.com/video1.flv");
video.addEventListener(VideoProgressEvent.PROGRESS,
                       function(e:VideoProgressEvent):void
                       {
                         if (e.bytesLoaded == e.bytesTotal)
                         {
                           trace("video1 loaded.");
                           parent.addChild(video1);
                           video1.play();
                         }
                       }
var video2:VideoPlayer = new VideoPlayer();
video2.load("http://example.com/video1.flv");
video.addEventListener(VideoProgressEvent.PROGRESS,
                       function(e:VideoProgressEvent):void
                       {
                         if (e.bytesLoaded == e.bytesTotal)
                         {
                           trace("video2 loaded.");
                         }
                       }
于 2008-12-19T07:20:12.403 回答