如何使用Actionscript 3.0同时播放多个视频片段

时间:2011-04-13 23:30:13

标签: actionscript-3 video flash multimedia

我正在尝试做一个小型多媒体播放器,我至少有9个小视频片段,我想放置和播放 - 全部由AS 3.0控制。

它甚至可能超过9个剪辑,但它们会在9个地方随机显示。电影也可以切换视口。

我会将它们全部预加载到缓冲区中,我想在同一时间随机播放它们。

这意味着可能有9个大小相等的区域显示小动画片段,包括声音和随机时间。

像这样:

[1] [2] [3]

[4] [5] [6]

[7] [8] [9]

所以它的1个Flash画布/播放器同时显示它们。

这是可能还是会让Flash崩溃以播放9部电影,包括他们的声音?电影可能长度不同,必须重置和播放多次,但我不能将结果预先呈现为用户输入随机生成的结果。

在这里有任何敏锐的AS 3.0专家可以指出我这个想法的正确方向吗?

修改

喜欢...从哪里开始的示例代码?我一直在想我可以将所有部分放入一个“精灵电影”和每个“窗口”的XYZ框架中播放 - 但不确定它是如何或是否有效......也不是最好的方法。

2 个答案:

答案 0 :(得分:3)

我认为这不仅仅是可能的。您可以创建9个视频对象,并且需要9个NetStream。您可以设置一个计时器来分别启动每个视频。

所以最简单的是在一个数组中有9个flv名,在数组中有9个。然后创建一个循环,在其中创建9个视频对象,将它们排列在矩阵中,然后使用超时在特定时间启动每个视频对象。

我能想到的最简单,最短的代码如下:

//we use the same flv now
var flvs:Array = ["filename.flv", "filename.flv", "filename.flv", "filename.flv", "filename.flv", "filename.flv", "filename.flv", "filename.flv", "filename.flv"];

//setting the times in milliseconds
var times:Array = [0, 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000];

//creating a NetConnection
var nc:NetConnection = new NetConnection();

//connect null, the flv is in the same folder and a simple file loading
nc.connect(null);

//the loop
for(var i:int = 0; i < times.length; i++)
{
    var ns:NetStream = new NetStream(nc);

    var video:Video = new Video(100, 100);
    addChild(video);

    //i%3 and int(i/3) arranges them in a 3x3 matrix
    video.x = (i%3) * video.width;
    video.y = int(i/3) * video.height;

    video.attachNetStream(ns);

    //the tricky timeout to call the funcion playFlv, in times[i] time, for the specific nc NetStream to play the given flvs[i] flv
    flash.utils.setTimeout(playFlv, times[i], ns, flvs[i]);
}

function playFlv(ns:NetStream, flv:String):void
{
    ns.play(flv);
}

答案 1 :(得分:0)

是的,这绝对是可能的。您当然希望尽可能地优化视频。在Pine Point网站上有先例,(你必须导航到“保质期”部分,并点击“下一步”几次才能看到它)它一次播放12个视频,所有不同的长度。在构建它方面,与播放一个视频没什么不同,只需重复步骤X次。

我希望有所帮助,