Управление воспроизведением видео

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Класс NetStream имеет четыре основных метода для управления воспроизведением видео.

pause() : приостанавливает воспроизведение видеопотока. Если видео уже приостановлено, вызов данного метода ни к чему не приведет.

resume() : возобновляет воспроизведение видеопотока, который был приостановлен. Если видео уже воспроизводится, вызов данного метода ни к чему не приведет.

seek() : ищет ключевой кадр, расположенный ближе всех к указанному местоположению (смещение от начала потока, в секундах).

togglePause() : приостанавливает и возобновляет воспроизведение видеопотока.

Примечание. Метода stop() не существует. Чтобы остановить поток, необходимо приостановить воспроизведение и перейти к началу видеопотока.
Примечание. Метод play() не возобновляет воспроизведение, он служит для загрузки видеофайлов.

Следующий пример демонстрирует управление видео с помощью нескольких кнопок. Чтобы выполнить этот пример, создайте новый документ и добавьте четыре экземпляра Button в рабочее пространство ( pauseBtn , playBtn , stopBtn и togglePauseBtn ).

var nc:NetConnection = new NetConnection(); 
nc.connect(null); 
 
var ns:NetStream = new NetStream(nc); 
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); 
ns.play("video.flv"); 
function asyncErrorHandler(event:AsyncErrorEvent):void 
{ 
    // ignore error 
} 
 
var vid:Video = new Video(); 
vid.attachNetStream(ns); 
addChild(vid); 
 
pauseBtn.addEventListener(MouseEvent.CLICK, pauseHandler); 
playBtn.addEventListener(MouseEvent.CLICK, playHandler); 
stopBtn.addEventListener(MouseEvent.CLICK, stopHandler); 
togglePauseBtn.addEventListener(MouseEvent.CLICK, togglePauseHandler); 
 
function pauseHandler(event:MouseEvent):void 
{ 
    ns.pause(); 
} 
function playHandler(event:MouseEvent):void 
{ 
    ns.resume(); 
} 
function stopHandler(event:MouseEvent):void 
{ 
    // Pause the stream and move the playhead back to 
    // the beginning of the stream. 
    ns.pause(); 
    ns.seek(0); 
} 
function togglePauseHandler(event:MouseEvent):void 
{ 
    ns.togglePause(); 
}

Нажатие экземпляра кнопки pauseBtn в процессе воспроизведения приостанавливает видеопоток. Если видео уже приостановлено, кнопка не действует. Нажатие кнопки playBtn возобновляет воспроизведение, если видеопоток был приостановлен. Если видео уже воспроизводится, кнопка не действует.

Определение конца видеопотока

Чтобы прослушивать начало и конец видеопотока, необходимо добавить прослушиватель события netStatus для экземпляра NetStream. Следующий код демонстрирует прослушивание различных кодов в процессе воспроизведения видеофайла.

ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler); 
function statusHandler(event:NetStatusEvent):void 
{ 
    trace(event.info.code) 
}

Выше приведенный код генерирует следующий вывод:

NetStream.Play.Start 
NetStream.Buffer.Empty 
NetStream.Buffer.Full 
NetStream.Buffer.Empty 
NetStream.Buffer.Full 
NetStream.Buffer.Empty 
NetStream.Buffer.Full 
NetStream.Buffer.Flush 
NetStream.Play.Stop 
NetStream.Buffer.Empty 
NetStream.Buffer.Flush

В частности, необходимо прослушивать два кода: «NetStream.Play.Start» и «NetStream.Play.Stop», которые обозначают начало и конец воспроизведения видео. Следующий код использует инструкцию switch, чтобы фильтровать эти два кода и отслеживать сообщения.

function statusHandler(event:NetStatusEvent):void 
{ 
    switch (event.info.code) 
    { 
        case "NetStream.Play.Start": 
            trace("Start [" + ns.time.toFixed(3) + " seconds]"); 
            break; 
        case "NetStream.Play.Stop": 
            trace("Stop [" + ns.time.toFixed(3) + " seconds]"); 
            break; 
    } 
}

Прослушивая событие netStatus ( NetStatusEvent.NET_STATUS ), можно создать видеопроигрыватель, который после завершения воспроизведения текущего файла загружает следующий видеофайл из списка воспроизведения.