NetStream 클래스는 비디오 재생 제어를 위한 네 가지 주요 메서드를 제공합니다.
pause()
: 비디오 스트림 재생을 일시 중지합니다. 비디오가 이미 일시 정지된 경우 이 메서드를 호출해도 아무 것도 수행되지 않습니다.
resume()
: 일시 중지된 비디오 스트림의 재생을 다시 시작합니다. 비디오가 이미 재생 중인 경우 이 메서드를 호출하면 아무 작업도 수행되지 않습니다.
seek()
: 지정된 위치(스트림 시작 부분부터 초 단위의 오프셋)에 가장 가까운 키프레임을 찾습니다.
togglePause()
: 스트림 재생을 일시 중지 또는 다시 시작합니다.
참고:
stop()
메서드가 없습니다. 스트림을 멈추려면 재생을 일시 정지한 후 비디오 스트림의 시작 부분을 찾아야 합니다.
참고:
play()
메서드는 재생을 다시 시작하지 않으며 비디오 파일 로드에 사용됩니다.
다음 예제에서는 여러 버튼을 사용하여 비디오를 제어하는 방법을 설명합니다. 다음 예제를 실행하려면 새 문서를 만들고 작업 영역에 버튼 인스턴스를 네 개(
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
버튼 인스턴스를 클릭하면 비디오 재생이 다시 시작되지만, 비디오가 이미 재생 중인 경우에는 이 버튼을 클릭해도 아무 효과가 없습니다.
비디오 스트림의 끝 감지
비디오 스트림의 시작과 끝을 수신하려면 이벤트 리스너를 NetStream 인스턴스에 추가하여
netStatus
이벤트를 수신해야 합니다. 다음 코드에서는 비디오 재생 중 다양한 코드를 수신하는 방법을 보여 줍니다.
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
)를 수신하여 현재 비디오 재생 완료 시 재생 목록에 있는 다음 비디오를 로드하는 비디오 플레이어를 만들 수 있습니다.