首页 > 解决方案 > 在 Java 中实现 RTSP 服务器以在 VLC 媒体播放器上流式传输视频

问题描述

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

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);
                }
    }

我的 RTSP BufferedWritter 启动如下:

       RTSPBufferedWriter = new BufferedWriter(new OutputStreamWriter(server.RTSPsocket.getOutputStream()));

我在这里面临的问题是无法将响应发送到 vlc 播放器以获取设置请求,并且播放器就像缓冲一样。vlc向服务器发送的请求如下:

SETUP rtsp://localhost:8080 RTSP/1.0
CSeq: 0
Transport: RTP/AVP;unicast;client_port=9194-9195

我在成功向 VLC 发送响应并开始流式传输和徘徊向 vlc 发送响应的正确方式以及如何知道 vlc 收到响应方面遇到了困难。任何形式的帮助将不胜感激。

更新这里是 vlc 媒体播放器的日志:

-- 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 --

标签: javastreamingvlcrtsprtp

解决方案


推荐阅读