我正在编写 RTSP 流媒体服务器,我需要一些帮助。我想我已经尝试了一切并阅读了主题:
Android 本地 RTSP 服务器(欺骗),PVPlayer 在发送 DESCRIBE 回复后关闭 TCP 套接字
和其他与他们类似的。当然,我也阅读了许多 pdf 和 RFC。
我的故事:我写了 rtsp 服务器,当我向 DESCRIBE 标头发送响应时出现问题:
responseHeader.append(HeaderStates.OK);
responseHeader.append(CRLF);
responseHeader.append(CSeq);
responseHeader.append(CRLF);
responseHeader.append("session: ");
responseHeader.append(Long.valueOf(sessionID));
responseHeader.append(CRLF);
Date date = new Date();
responseHeader.append("Date: ");
responseHeader.append(date.toGMTString());
responseHeader.append(CRLF);
responseHeader.append("Content-Type: application/sdp");
responseHeader.append(CRLF);
responseHeader.append("Content-Base: ");
responseHeader.append(localAddress.getHostAddress());
responseHeader.append(":");
responseHeader.append(Integer.valueOf(localPort));
responseHeader.append(CRLF);
responseHeader.append(CRLF);
responseHeader.append("v=0");
responseHeader.append(CRLF);
responseHeader.append("o=- ");
responseHeader.append(date.getTime());
responseHeader.append(" ");
responseHeader.append(date.getTime());
responseHeader.append(" IN IP4 ");
responseHeader.append(localAddress.getHostAddress());
responseHeader.append(CRLF);
responseHeader.append("a=control:rtsp://192.168.1.143:55555");
responseHeader.append(CRLF);
responseHeader.append("s=RTSPSession");
responseHeader.append(CRLF);
responseHeader.append("m=video 55555 RTP/AVP 26");
responseHeader.append(CRLF);
responseHeader.append("a=rtpmap:26 JPEG/90000");
responseHeader.append(CRLF);
responseHeader.append("a=mimetype:video/JPEG");
responseHeader.append(CRLF);
//responseHeader.append("a=control:trackID=1");
responseHeader.append(CRLF);
responseHeader.append(CRLF);
其中 HeaderStates.OK 是“200 OK”,SessionID 是 System.currentTimeMillis(),CRLF = “\r\n”,responseHeader 以“RTSP/1.0”开头
然后 VLC(我的 PC 上的客户端抛出未处理的异常并崩溃),SMPlayer 读取标题并将其显示在日志中但不响应。
有时我会在 SMPlayer 日志中显示 SDP 中的错误,但我认为此错误的原因是调试时间过长。
我的问题:我做错了什么?为什么客户端没有 SETUP 标头?