在Flash中预加载多个视频?在Flex?

时间:2008-12-18 17:21:36

标签: flex flash video latency preloader

我正在做一个我们连续播放多个视频的项目,如果我们通过提供流网址以正常方式加载它们,那么每次我们开始下一个视频时都会出现加载延迟。

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

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

对于Flex / Flash我对其中任何一个或两者的解决方案感兴趣。也许它是一样的,因为它是动作脚本?

2 个答案:

答案 0 :(得分:3)

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

首页的摘录:

  

“BulkLoader是一个用Actionscript 3(AS3)编写的最小库   旨在进行装载和管理   复杂的装载要求更容易   而且更快。 BulkLoader需要更多   动态的,较少的架构   aproach [sic]。很少进口和沉重   使用AS3的动态功能,   BulkLoader有一种单线感觉   不妨碍你。“

答案 1 :(得分:3)

这应该非常简单。对于直接闪光,请使用fl.video。 VideoPlayer 或fl.video。 FLVPlayback 。创建多个播放器,每个视频一个,使用您的源视频的网址调用每个播放器上的load()。然后侦听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.");
                         }
                       }