Android(libstreaming)RTSP服务器可以播放视频但没有声音

炒沙作縻终不饱,缕冰文章费工巧。这篇文章主要讲述Android(libstreaming)RTSP服务器可以播放视频但没有声音相关的知识,希望能为你提供帮助。
我使用libstreaming在android上创建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

谢谢
答案我追踪了源代码,发现服务器没有收到音频流的请求,只收到了视频流的请求。
在RtspServer.java中设置连接后,收到的trackID = 1。
(trackID = 0表示AudioStream & & trackID = 1表示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); .... } .... }

我通过使用不同的URL解决了这个问题:
rtsp:MY_IP:1234?trackID=0

谢谢
另一答案【Android(libstreaming)RTSP服务器可以播放视频但没有声音】我有同样的问题。设置streaming method对我有用。
mSession.getVideoTrack().setStreamingMethod(MediaStream.MODE_MEDIACODEC_API_2);


    推荐阅读