首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android (libstreaming) RTSP服务器可以播放视频但不能播放声音

Android (libstreaming) RTSP服务器可以播放视频但不能播放声音
EN

Stack Overflow用户
提问于 2017-08-25 17:42:44
回答 2查看 1.2K关注 0票数 0

我使用libstreaming在Android上创建了一个RTSP服务器。然后,我使用另一部手机连接到服务器来播放实况流。我希望服务器可以使用它的摄像头和麦克风来录制视频,然后在客户端播放。连接后,视频可以正常播放,但没有声音。

以下是我的RTSP服务器代码的一部分:

代码语言:javascript
复制
    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中的目的端口。

我试着修改它,如下所示,但仍然不起作用

代码语言:javascript
复制
    if (session.getAudioTrack() != null) {
        Log.e("SessionBuilder", "Audio track != null");
        AudioStream audio = session.getAudioTrack();
        audio.setAudioQuality(mAudioQuality);
        audio.setDestinationPorts(5008);
    }

有人知道这个问题的原因吗?

顺便说一下,我在另一部手机上使用VLC播放器作为客户端。我使用以下代码行连接到服务器

代码语言:javascript
复制
rtsp:MY_IP:1234?h264=200-20-320-240

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-08-28 11:07:57

我追踪源代码,发现服务器并没有收到音频流的请求,只收到了视频流的请求。

在RtspServer.java中建立连接后,接收到的trackID=1。

(trackID=0表示AudioStream && trackID=1表示VideoStream)

代码语言:javascript
复制
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解决了这个问题:

代码语言:javascript
复制
rtsp:MY_IP:1234?trackID=0

谢谢

票数 0
EN

Stack Overflow用户

发布于 2018-11-05 12:06:07

我也有同样的问题。设置streaming method对我很有效。

代码语言:javascript
复制
mSession.getVideoTrack().setStreamingMethod(MediaStream.MODE_MEDIACODEC_API_2);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45878655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档