java - 在 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 --
解决方案
推荐阅读
- blazor - 有人 Blazor 远程验证工作吗?
- rust - 返回响应后在后台运行长时间运行的异步函数
- python - 根据 get_input_details 输入图像的 dtype
- javascript - React.js JSX 片段错误和 HTML 缺失标签
- c++ - 是否可以从目标部分更新生成文件变量?
- factory-pattern - 工厂模式是否违反单一责任原则?
- python - Google API OAuth 2.0 redirect_uri_mismatch 错误
- c# - 实体框架的两个跨日期数据列表错误
- docker - 如何使 Identityserver 重定向到我的网络应用程序?
- mysql - secure-file-priv 阻止我将 .CSV 导入数据库