2010-04-19 4 views
2

플래시에서 비디오를 재생할 때는 먼저 버퍼링을 시작한 다음 버퍼가 가득차면 비디오가 재생됩니다. 버퍼가 채워지는 동안 연결된 비디오 객체는 자동으로 첫 번째 비디오 프레임을 표시합니다.비디오 첫 프레임에 대한 AS3 알림

이 프레임을 사용할 수있는 경우 알림을받을 수있는 방법이 있습니까? 표시 할 이미지가있을 때까지 비디오 구성 요소를 숨기려고합니다.

현재 버퍼 전체 NetStreamEvent를 처리하므로 재생을 시작할 때 표시됩니다. 하지만 이제는 더 큰 버퍼 (10s)가 필요하므로 사용자에게 뭔가를 표시하기 위해 10 초를 기다리는 것이 좋지 않습니다.

+1

첫 번째 프레임 (또는 그 문제의 모든 포스터 프레임)을 생성하고 직접 표시 한 다음 비디오가 재생 버퍼를 충분히 재생할 수 있습니까? – heavilyinvolved

답변

0

"NetStream.Play.Start"를 수신해야합니다.

 
package { 
    import flash.display.Sprite; 
    import flash.events.*; 
    import flash.media.Video; 
    import flash.net.NetConnection; 
    import flash.net.NetStream; 

    public class VideoExample extends Sprite { 
     private var videoURL:String = "someVideo.flv"; 
     private var connection:NetConnection; 
     private var stream:NetStream; 
     private var video:Video; 

     public function VideoExample() { 
      connection = new NetConnection(); 
      connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
      connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
      connection.connect(null); 
     } 

     private function netStatusHandler(event:NetStatusEvent):void { 

      trace("event.info.code "+event.info.code); 

      switch (event.info.code) { 
       case "NetConnection.Connect.Success": 
        connectStream(); 
        break; 

       case "NetStream.Play.Start": 
       addChild(video); 
       break; 

       case "NetStream.Play.StreamNotFound": 
        trace("Unable to locate video: " + videoURL); 
        break; 
      } 
     } 

     private function connectStream():void { 
      var stream:NetStream = new NetStream(connection); 
      stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
      stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); 
      video = new Video(); 
      video.attachNetStream(stream); 
      stream.play(videoURL); 

     } 

     private function securityErrorHandler(event:SecurityErrorEvent):void { 
      trace("securityErrorHandler: " + event); 
     } 

     private function asyncErrorHandler(event:AsyncErrorEvent):void { 
      // ignore AsyncErrorEvent events. 
     } 
    } 
} 
관련 문제