Как заставить несколько видеороликов воспроизводиться одновременно из Actionscript 3.0 - PullRequest
2 голосов
/ 14 апреля 2011

Я пытаюсь создать небольшой мультимедийный проигрыватель, где у меня есть как минимум 9 небольших видеоклипов, которые я бы хотел разместить и воспроизвести - все они управляются AS 3.0.

Это может быть даже более 9 клипов,но они будут показывать в случайном порядке в 9 местах.Фильм также может переключать видовой экран.

Я предварительно загружу их все в буферы и хочу воспроизводить их в случайном порядке одновременно.

Это означает, что может быть 9 областей одинакового размера, показывающихнебольшие видеоклипы, включая звук и случайное время.

Например:

[1] [2] [3]

[4] [5] [6]

[7] [8] [9]

Таким образом, его 1 Flash canvas / player показывает их все одновременно.

Возможно ли это или это приведет к сбою Flash при воспроизведении 9 фильмов, включая их звук?Фильмы могут быть разной длины, и их придется сбрасывать и воспроизводить много раз, но я не могу предварительно отобразить результат как случайный результат, полученный из пользовательского ввода.

Любой проницательный гуру AS 3.0, который может указать мнеправильное направление для этой идеи?

РЕДАКТИРОВАТЬ

как в ... пример кода с чего начать?Я думал, что мог бы поместить все части в один «фильм-спрайт» и воспроизведение из кадра XYZ для каждого «окна» - но не уверен, как или будет ли это работать ... ни какой лучший подход.

Ответы [ 2 ]

3 голосов
/ 21 апреля 2011

Я думаю, что это более чем возможно. Вы создаете 9 видеообъектов, и вам нужно 9 NetStreams для них. Вы устанавливаете таймер для запуска каждого видео соответственно.

Таким образом, самое простое - иметь 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);
}
0 голосов
/ 14 апреля 2011

Да, это определенно возможно. Конечно, вы захотите максимально оптимизировать свои видео. Для этого есть прецедент на веб-сайте Pine Point (вам придется перейти в раздел «Срок годности» и нажать «Далее» несколько раз, чтобы увидеть его). один раз, все разной длины. С точки зрения его построения, ничем не отличается от воспроизведения одного видео, просто повторите шаги X несколько раз.

Надеюсь, это поможет,

...