비디오 재생 제어

Flash Player 9 이상, Adobe AIR 1.0 이상

NetStream 클래스는 비디오 재생 제어를 위한 네 가지 주요 메서드를 제공합니다.

pause(): 비디오 스트림 재생을 일시 중지합니다. 비디오가 이미 일시 정지된 경우 이 메서드를 호출해도 아무 것도 수행되지 않습니다.

resume(): 일시 중지된 비디오 스트림의 재생을 다시 시작합니다. 비디오가 이미 재생 중인 경우 이 메서드를 호출하면 아무 작업도 수행되지 않습니다.

seek(): 지정된 위치(스트림 시작 부분부터 초 단위의 오프셋)에 가장 가까운 키프레임을 찾습니다.

pause(): 스트림 재생을 일시 중지 또는 다시 시작합니다.

참고: 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)를 수신하여 현재 비디오 재생 완료 시 재생 목록에 있는 다음 비디오를 로드하는 비디오 플레이어를 만들 수 있습니다.