2012-01-23 3 views
2

다음은 as3 플래시의 기본 코드 비트입니다. rtmp red5를 사용한 간단한 비디오 스트리밍 예제입니다. 하지만 스트림에 연결하는 데 문제가있는 것 같습니다. red5 서버 데모 설치와 함께 제공된 것과 동일한 비디오 파일을 사용하고 있습니다. (올바르게 실행하여 설치된 ofla의 데모를 확인했습니다) 내 출력 추적을 연결 성공 및 비디오 파일의 재생 시작. 하지만 메타 데이터를 얻지 못하거나 실제로 재생할 수 없습니다.as3 rtmp localhost의 비디오 스트림 red5 경로 문제

netStatusHandler가 NetConnection.Connect.Success

netStatusHandler NetStream.Play.Reset

netStatusHandler NetStream.Play.Start

난 길을 포기에 관해서는 여기를 놓친 거지 무슨 비디오 파일에? 그들은 기본 빨간색 5 설치와 함께 제공되는 동일한 데모 예제 폴더에 있습니다.

package 
{ 
    import flash.display.*; 
    import flash.events.*; 
    import flash.media.*; 
    import flash.net.* 



    public class NetConnectionExample extends MovieClip 
    { 
     private var videoURL:String = "rtmp://localhost/oflaDemo/streams"; 
     private var connection:NetConnection; 
     private var stream:NetStream; 
     public function NetConnectionExample() 
     { 
      // constructor code 
      connection = new NetConnection(); 
      connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
      connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
      connection.connect(videoURL, true); 
     } 
     private function netStatusHandler(event:NetStatusEvent):void 
     { 
      trace("netStatusHandler",event.info.code); 
      switch (event.info.code) 
      { 
       case "NetConnection.Connect.Success": 
        connectStream(); 
        break; 
       case "NetStream.Play.StreamNotFound": 
        trace("Stream not found: " + videoURL); 
        break; 
       case "NetStream.Play.Start": 
       break; 
      } 
     } 

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

     private function connectStream():void 
     { 
      stream = new NetStream(this.connection); 
      stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
      stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler) 
      stream.client = new CustomClient(); 
      var video:Video = new Video(); 
      video.attachNetStream(stream); 
      stream.play(videoURL+"avatar.flv"); 
      addChild(video); 
     } 
     function asyncErrorHandler(event:AsyncErrorEvent):void { 
      // ignore AsyncErrorEvent events. 
     } 

    } 
} 

class CustomClient { 
public function onMetaData(info:Object):void 
{ 
    trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate); 
} 
public function onCuePoint(info:Object):void 
{ 
    trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type); 
} 
} 

편집 : 그것은 경로 문제였다 Where do I place a FLV file to stream on a local Red5 server?

+0

는 메타 데이터 헤더 –

+0

동영상의 메타가 제대로 추가 가지고에 있는지 확인 가난하게 인코딩 된 FLV처럼 나에게 소리 작동합니다. 나는 이것이 경로 문제라는 것을 알아 냈다. –

답변

2

관련. oflaDemo라는 응용 프로그램의 rtmp 비디오 폴더 이름이 streams입니다. 스트림을 연결 한 후 너무

private var videoURL:String = "rtmp://localhost/oflaDemo"; 

직접 파일 이름과 같은 경로를 제공합니다.

stream.play("avatar.flv"); 
관련 문제