Android 多个Libstreaming流仅识别为第一个RTSP客户端的会话

Android 多个Libstreaming流仅识别为第一个RTSP客户端的会话,android,session,video-streaming,rtsp,live555,Android,Session,Video Streaming,Rtsp,Live555,我正在使用Live555作为RTSP客户端从androidLibStreamingmajokernelpanic服务器获取RTSP H264视频流。我面临的问题是显示来自上述类型的android RTSP服务器的多个视频流,这些服务器由不同的RTSP客户端处理。问题很明显,如果使用VLC,也可以通过Live555获取RTSP H264帧 第一个VLC(RTSP客户端)正确显示视频 其他VLC(RTSP客户端)也不显示任何内容,只显示其帧 显示在第一个VLC视频窗口中 此问题发生在指定的RTSP服

我正在使用Live555作为RTSP客户端从androidLibStreamingmajokernelpanic服务器获取RTSP H264视频流。我面临的问题是显示来自上述类型的android RTSP服务器的多个视频流,这些服务器由不同的RTSP客户端处理。问题很明显,如果使用VLC,也可以通过Live555获取RTSP H264帧

  • 第一个VLC(RTSP客户端)正确显示视频

  • 其他VLC(RTSP客户端)也不显示任何内容,只显示其帧 显示在第一个VLC视频窗口中

  • 此问题发生在指定的RTSP服务器上,而不是其他IP摄像机上

    我想知道live555如何确定RTSP数据帧属于哪个会话。 我发现问题可能会在下面的代码中暴露出来

    RTSP服务器的安装响应和

        else if (request.method.equalsIgnoreCase("PLAY")) {
            String requestAttributes = "RTP-Info: ";
            if (mSession.trackExists(0)) requestAttributes += "url=rtsp://"+mClient.getLocalAddress().getHostAddress()+":"+mClient.getLocalPort()+"/trackID="+0+";seq=0,";
            if (mSession.trackExists(1)) requestAttributes += "url=rtsp://"+mClient.getLocalAddress().getHostAddress()+":"+mClient.getLocalPort()+"/trackID="+1+";seq=0,";
            requestAttributes = requestAttributes.substring(0, requestAttributes.length()-1) 
                                + "\r\nSession: 1185d20035702ca\r\n";
    
    游戏中的请求

    起初,我以为我可以在“session:”之后将硬编码的session ID(1185d20035702ca)设置为动态,然后问题就解决了,但在我更改后,问题仍然存在

    Wireshark验证会话id的成功更改


    欢迎任何相关建议。谢谢。

    libstreaming硬编码了视频的目标端口

    video.setDestinationPorts(5006);
    
    您只需要将其变为变量以支持多个实例

    希望能帮助你解决你的问题

    video.setDestinationPorts(5006);