Класс 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
), можно создать видеопроигрыватель, который после завершения воспроизведения текущего файла загружает следующий видеофайл из списка воспроизведения.