2017-08-25 4 views
0

私はlibstreamingを使ってAndroid上にRTSPサーバーを作成しています。次に、別の電話を使用してサーバーに接続し、ライブストリームを再生します。サーバーがカメラとマイクを使ってビデオを録画し、クライアントで再生できることを願っています。 接続後、ビデオは正常に再生できますが、サウンドはありません。Android(libstreaming)RTSPサーバーではビデオは再生できますが音は出ません

次は私のRTSPサーバのコードの一部です:

mSession = SessionBuilder.getInstance() 
      .setSurfaceView(mSurfaceView) 
      .setPreviewOrientation(90) 
      .setContext(getApplicationContext()) 
      .setAudioEncoder(SessionBuilder.AUDIO_AAC) 
      //.setAudioQuality(new AudioQuality(16000, 32000)) 
      .setAudioQuality(new AudioQuality(8000, 16000)) 
      .setVideoEncoder(SessionBuilder.VIDEO_H264) 
      //.setVideoQuality(new VideoQuality(320, 240, 20, 500000)) 
      .build(); 

    mSession.startPreview(); //camera preview on phone surface 
    mSession.start(); 

私はこの質問を探し、何人かの人々は、私がSessionBuilder.javaの宛先ポートを変更すべきだと述べました。

私は従うように変更しようとしたが、それはまだ

if (session.getAudioTrack() != null) { 
     Log.e("SessionBuilder", "Audio track != null"); 
     AudioStream audio = session.getAudioTrack(); 
     audio.setAudioQuality(mAudioQuality); 
     audio.setDestinationPorts(5008); 
    } 

を動作しませんでした誰かがこの質問の理由を知っていますか?

ところで、私はクライアントとして別の電話でVLCプレーヤーを使用しました。 私はソースコードをトレースし、サーバがオーディオストリームの要求を受信しなかったことが判明、唯一の要求を受信したサーバに

rtsp:MY_IP:1234?h264=200-20-320-240 

おかげ

答えて

0

を接続するために次の行を使用しますビデオストリーム。

RtspServer.javaで接続を設定した後、受信したtrackID = 1。

(trackID = 0 AudioStream & & trackID = 1ビデオストリームを意味することを意味する)

public Response processRequest(Request request) throws IllegalStateException, IOException { 
     .... 
     else if (request.method.equalsIgnoreCase("SETUP")) { 
      .... 
      boolean streaming = isStreaming(); 
      Log.e(TAG, "trackId: " + trackId); 
      // received trackID=1 which represent video stream 
      mSession.syncStart(trackId); 
      .... 
     } 
    .... 
} 

Iは、異なるURLを使用してこの問題を解決:

rtsp:MY_IP:1234?trackID=0 

おかげ

関連する問題