2012-05-24 1 views
3

http://www.aftek.com/afteklab/aftek-RTMP-library.shtml 에서 라이브러리를 구현하여 red5 서버의 라이브 비디오를 스트리밍하려고합니다.RTMP android aftek

서버에서 나는 simpleBroadcaster를 사용 중이며 android phone으로 스트리밍하려고합니다.

내 코드 : 난 항상에서 onStatus 기능에 NetStream.Play.StreamNotFound를 수신하고

package com.cu.reader; 

import java.nio.channels.FileChannel; 
import java.util.Map; 
import com.al.rtmp.client.RtmpClient; 
import com.al.rtmp.client.RtmpStream; 
import com.al.rtmp.client.RtmpStreamFactory; 
import com.al.rtmp.client.data.MetaData; 
import com.al.rtmp.client.data.RTMPData; 
import com.al.rtmp.client.data.VideoCodec; 
import com.al.rtmp.message.Metadata; 
import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 

public class StreamreaderActivity extends Activity implements RtmpClient { 
    RtmpStream stream = null; 
    Boolean connected = false; 
String server = "rtmp://216.224.181.197/oflaDemo/"; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    stream = RtmpStreamFactory.getRtmpStream(); 
    stream.setClient(this); 
    stream.connect(server); 
} 
@Override 
public void streamCreated() { 
    Log.i("stream","Connected!");  

    connected = true; 
    stream.setPlayName("red5StreamDemo"); 
    stream.play(); 

} 
@Override 
public byte[] getWriteData(int length) { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public void invoke(String arg0, Object... arg1) { 
    // TODO Auto-generated method stub 
; 
} 
@Override 
public void onDataReceived(RTMPData rtmpData) { 
    MetaData metaData = rtmpData.getMetaData(); 
    VideoCodec vc = metaData.getVideoCodec(); 
} 
@Override 
public void onError(Exception ex) { 
    Log.e("ClientException", " Some exception occurred." + ex.getMessage()); 
    ex.printStackTrace(); 
} 
@Override 
public void onMetaDataReceived(Map map) { 
    Log.i("code","METADATA:" + map);   

} 
@Override 
public void onResult(String method, Object... arg1) { 
    Log.i("result","METADATA:" + method);  

} 
@Override 
public void onStatus(String code) { 
    Log.i("code",code);  
} 

} 

.

는 스트림 나던 RED5 응용 프로그램에 존재 렸기 때문에 당신이

답변

0

스트림이 존재하지 않습니다. 하지만 왜? 아마도 하나 또는 두 가지 이유가 있습니다. 즉, 생방송 스트림을 만들지 않았고 잘못된 범위를 사용하고 있기 때문입니다. 수작업으로 다르게 설정하지 않는 한,/live에있는 '라이브'방송사 범위를 사용하십시오.

따라서 rtmp : //216.224.181.197/live/red5StreamDemo에 게시하고 동일한 mrl을 구독하십시오 (이 예제에서는 rtmp : //216.224.181.197/live/red5StreamDemo). 참고 :이 작업을 수행하려면 '라이브'스트림을 만들어 RED5 서버로 보내야합니다. avconv (일명 ffmpeg)를 사용하여 rtmp 피드를 만들 수 있습니다.

1

당신은 NetStream.Play.StreamNotFound 오류가 감사드립니다.

package { 

import flash.display.Sprite; 
import flash.events.AsyncErrorEvent; 
import flash.events.IOErrorEvent; 
import flash.events.NetStatusEvent; 
import flash.media.Video; 
import flash.net.NetConnection; 
import flash.net.NetStream; 

public class LearnWowzaClient extends Sprite { 

    private var nc:NetConnection; 
    private var video:Video = new Video(); 

    public function LearnWowzaClient() { 

     nc = new NetConnection(); 
     nc.client = this; 
     nc.addEventListener(NetStatusEvent.NET_STATUS, onNet); 
     nc.connect("rtmp://216.224.181.197/oflaDemo/"); 
    } 

    private function onNet(event:NetStatusEvent):void { 
     trace(event); 
     trace(event.info.code); 
     switch (event.info.code) { 
      case "NetConnection.Connect.Success": 
       tryPlayStream(); 
       break; 
     } 
    } 

    private function tryPlayStream():void { 
     trace("playStream"); 
     var ns:NetStream = new NetStream(nc); 
     ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus); 
     ns.addEventListener(IOErrorEvent.IO_ERROR, onIOError); 
     ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsyncError); 

     ns.play("red5StreamDemo"); 
     video.attachNetStream(ns); 
    } 

    public function onBWCheck(parameter:Object = null):void { 
     trace("onBWCheck p=" + parameter); 
    } 

    public function onBWDone(parameter:Object = null):void { 
     trace("onBWDone p=" + parameter); 
    } 

    private function onIOError(event:IOErrorEvent):void { 
     trace("onIOError"); 
    } 

    private function onAsyncError(event:AsyncErrorEvent):void { 
     trace("onAsyncError"); 
    } 

    private function onNetStatus(event:NetStatusEvent):void { 
     trace("onNetStatus ", event.info.code); 
    } 
} 
} 

나는 또한 NetStream.Play.StreamNotFound 오류가 :

내가 확인하는 빠른 AS3 테스트를했다.red5 애플리케이션 코드를 표시 할 수 있습니까?

+0

이 라이브러리는 실제로이 튜토리얼을 찾을 수 없습니다. –

+0

안녕하세요, 가브리엘. 무슨 라이브러리 였니? 나는 단순한 순수한 sa3 코드를 썼다. – terbooter