2017-08-25 469 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表示語音串流& &的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); 
      .... 
     } 
    .... 
} 

我通過使用不同的URL解決了這個問題:

rtsp:MY_IP:1234?trackID=0 

由於

相關問題