我正在做一个我们连续播放多个视频的项目,如果我们通过提供流网址以正常方式加载它们,那么每次我们开始下一个视频时都会出现加载延迟。
我查看了Adobe的Flash和Flex文档,但我找不到预先加载视频的方法。在这个应用程序中嵌入它们是行不通的。理想情况下,我们会预先加载它们,同时显示进度条或其他短视频,并且只在所有视频加载后才开始播放视频。
我不习惯向其他人询问编程问题,我是RTFM,但我发现缺乏Adobe文档,并且谷歌搜索flash / flex问题很难。有很多东西需要筛选,我找不到相关的技术/解决方案。
对于Flex / Flash我对其中任何一个或两者的解决方案感兴趣。也许它是一样的,因为它是动作脚本?
答案 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.");
}
}