用Java实现RTSP服务器在VLC媒体播放器上传输视频

用Java实现RTSP服务器在VLC媒体播放器上传输视频,java,streaming,vlc,rtsp,rtp,Java,Streaming,Vlc,Rtsp,Rtp,我正在实现一个以VLC媒体播放器为客户端的RTSP流媒体服务器。当我尝试在VLC上传输视频时,启动服务器后,它会向服务器发送一个设置请求。我正在尝试按照RTSP和SDP协议发送响应 mysendresponse()的实现如下: private void sendResponse() { try { System.out.println("Sending response to the server for the SETUP request

我正在实现一个以VLC媒体播放器为客户端的RTSP流媒体服务器。当我尝试在VLC上传输视频时,启动服务器后,它会向服务器发送一个设置请求。我正在尝试按照RTSP和SDP协议发送响应

my
sendresponse()
的实现如下:

private void sendResponse() {
        try {
                    System.out.println("Sending response to the server for the SETUP request");
                    RTSPBufferedWriter.write("RTSP/1.0 200 OK" + CRLF);
                    System.out.println("RTSP/1.0 200 OK" + CRLF);
                    RTSPBufferedWriter.write("CSeq: " + RTSPSeqNb + CRLF);
                    System.out.println("CSeq: "+RTSPSeqNb + CRLF);
                    RTSPBufferedWriter.write("Transport: RTP/AVP;unicast;client_port="+RTSP_dest_port+"-"+(RTSP_dest_port+1)+";server_port=8080-8081"+ CRLF);
                    RTSPBufferedWriter.write("Session: " + RTSPid + CRLF);
                    System.out.println("Session: "+  RTSPid + CRLF);
                    RTSPBufferedWriter.flush();//
                    System.out.println("RTSP Server - Sent response to Client using the send response method.");
                } catch (Exception ex) {
                    System.out.println("Exception caught while sending response to SETUP request: " + ex);
                    System.exit(0);
                }
    }

       RTSPBufferedWriter = new BufferedWriter(new OutputStreamWriter(server.RTSPsocket.getOutputStream()));
SETUP rtsp://localhost:8080 RTSP/1.0
CSeq: 0
Transport: RTP/AVP;unicast;client_port=9194-9195
我的RTSP BufferedWriter启动如下:

private void sendResponse() {
        try {
                    System.out.println("Sending response to the server for the SETUP request");
                    RTSPBufferedWriter.write("RTSP/1.0 200 OK" + CRLF);
                    System.out.println("RTSP/1.0 200 OK" + CRLF);
                    RTSPBufferedWriter.write("CSeq: " + RTSPSeqNb + CRLF);
                    System.out.println("CSeq: "+RTSPSeqNb + CRLF);
                    RTSPBufferedWriter.write("Transport: RTP/AVP;unicast;client_port="+RTSP_dest_port+"-"+(RTSP_dest_port+1)+";server_port=8080-8081"+ CRLF);
                    RTSPBufferedWriter.write("Session: " + RTSPid + CRLF);
                    System.out.println("Session: "+  RTSPid + CRLF);
                    RTSPBufferedWriter.flush();//
                    System.out.println("RTSP Server - Sent response to Client using the send response method.");
                } catch (Exception ex) {
                    System.out.println("Exception caught while sending response to SETUP request: " + ex);
                    System.exit(0);
                }
    }

       RTSPBufferedWriter = new BufferedWriter(new OutputStreamWriter(server.RTSPsocket.getOutputStream()));
SETUP rtsp://localhost:8080 RTSP/1.0
CSeq: 0
Transport: RTP/AVP;unicast;client_port=9194-9195
我在这里面临的问题是无法向vlc播放器发送设置请求的响应,而播放器就像缓冲一样。vlc向服务器发送的请求如下:

private void sendResponse() {
        try {
                    System.out.println("Sending response to the server for the SETUP request");
                    RTSPBufferedWriter.write("RTSP/1.0 200 OK" + CRLF);
                    System.out.println("RTSP/1.0 200 OK" + CRLF);
                    RTSPBufferedWriter.write("CSeq: " + RTSPSeqNb + CRLF);
                    System.out.println("CSeq: "+RTSPSeqNb + CRLF);
                    RTSPBufferedWriter.write("Transport: RTP/AVP;unicast;client_port="+RTSP_dest_port+"-"+(RTSP_dest_port+1)+";server_port=8080-8081"+ CRLF);
                    RTSPBufferedWriter.write("Session: " + RTSPid + CRLF);
                    System.out.println("Session: "+  RTSPid + CRLF);
                    RTSPBufferedWriter.flush();//
                    System.out.println("RTSP Server - Sent response to Client using the send response method.");
                } catch (Exception ex) {
                    System.out.println("Exception caught while sending response to SETUP request: " + ex);
                    System.exit(0);
                }
    }

       RTSPBufferedWriter = new BufferedWriter(new OutputStreamWriter(server.RTSPsocket.getOutputStream()));
SETUP rtsp://localhost:8080 RTSP/1.0
CSeq: 0
Transport: RTP/AVP;unicast;client_port=9194-9195
要成功地将响应发送到VLC,并开始流式传输,找到向VLC发送响应的正确方法,以及如何知道VLC收到响应,我面临着困难。我们将非常感谢您的任何帮助

更新以下是vlc media player的日志:

-- logger module started --
main: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
main: playlist is empty
live555 error: Failed to connect with rtsp://127.0.0.1:8080
satip error: read error: No error
satip error: Failed to setup RTSP session
main error: connection failed: Connection refused by peer
access_realrtsp error: cannot connect to 127.0.0.1:8080
-- logger module stopped --

也请分享日志。检查发送消息的端口号和响应的位置。检查是通过UDP还是TCP。非常感谢您的回复,这里是vlc日志:`--logger module started--main:使用默认接口运行vlc。使用“cvlc”可使用无接口的vlc。主:播放列表为空live555错误:无法连接到rtsp://127.0.0.1:8080 satip错误:读取错误:无错误satip错误:无法设置RTSP会话主错误:连接失败:对等访问拒绝连接\u realrtsp错误:无法连接到127.0.0.1:8080--记录器模块已停止--`请添加服务器端日志(在问题中添加日志)并检查pcap(wireshark)对于端口详细信息和消息流。不要在同一台机器上运行服务器和客户端。实际上,我正在按照此处的说明进行扩展,并尝试将其扩展到vlc,提供的代码对java客户端运行良好,但对vlc不起作用。代码在此处>>``我在这里面临的主要问题是我无法从vlc获得任何响应r发送对任何vlc请求的响应。根据vlc日志:“live555错误:无法连接到”rtsp://127.0.0.1:8080 "您的套接字连接本身未成功。请共享日志。请检查发送消息的端口号以及响应的位置。检查是否通过UDP或TCP。非常感谢您的回复,这里是vlc日志:`--logger module started--main:使用默认接口运行vlc。使用“cvlc”使用vlc而不使用干扰ace.main:播放列表为空live555错误:无法连接到rtsp://127.0.0.1:8080 satip错误:读取错误:无错误satip错误:无法设置RTSP会话主错误:连接失败:对等访问拒绝连接\u realrtsp错误:无法连接到127.0.0.1:8080--记录器模块已停止--`请添加服务器端日志(在问题中添加日志)并检查pcap(wireshark)对于端口详细信息和消息流。不要在同一台机器上运行服务器和客户端。实际上,我正在按照此处的说明进行扩展,并尝试将其扩展到vlc,提供的代码对java客户端运行良好,但对vlc不起作用。代码在此处>>``我在这里面临的主要问题是我无法从vlc获得任何响应r发送对任何vlc请求的响应。根据vlc日志:“live555错误:无法连接到”rtsp://127.0.0.1:8080 “您的套接字连接本身不成功。