2017-08-25 8 views
0

J'utilise libstreaming pour créer un serveur RTSP sur un Android. Ensuite, j'utilise un autre téléphone pour me connecter au serveur pour lire le flux en direct. J'espère que le serveur pourra utiliser sa caméra et son micro pour enregistrer une vidéo puis jouer sur le client. Après la connexion, la vidéo peut être lue correctement, mais il n'y a pas de son.Android (libstreaming) serveur RTSP peut lire la vidéo mais pas de son

Ce qui suit fait partie de mon code de serveur 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(); 

je cherchais cette question, certaines personnes ont dit que je devrais modifier les ports de destination dans SessionBuilder.java.

J'ai essayé de le modifier comme suit, mais il ne fonctionne toujours pas

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

Est-ce que quelqu'un sait la raison de cette question? En passant, j'ai utilisé le lecteur VLC sur un autre téléphone en tant que client. -je utiliser la ligne suivante pour se connecter au serveur

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

Merci

Répondre

0

Je traçais le code source et a trouvé que le serveur n'a pas reçu la demande du flux audio, reçu que la demande du flux vidéo. Après la configuration de la connexion dans RtspServer.java, le trackID reçu est égal à 1.

(trackID = 0 signifie Audiostream & & trackID = 1 signifie VideoStream)

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 résolu ce problème en utilisant une URL différente:

rtsp:MY_IP:1234?trackID=0 

Merci