我目前正在扩展此项目http://www.csee.umbc.edu/~pmundur/courses/CMSC691C/lab5-kurose-ross.html以实现一个非常基本的RTSP服务器。
到目前为止,我有一个粗略的多线程实现,硬编码以使用VLC播放器作为客户端响应OPTIONS,DESCRIBE,SETUP和PLAY请求。问题是在响应PLAY请求后,VLC似乎没有确认在SETUP请求中指定的端口号上发送的任何RTP数据包。输出时,我的SETUP响应的相关部分 -
RTSPBufferedWriter.write("Transport: RTP/AVP;unicast;client_port="
+ RTP_dest_port + "-" + (RTP_dest_port + 1)
+ ";server_port=55556-55557" + CRLF);
RTP_dest_port匹配客户端请求。然后UDP初始化如下;
RTPsocket = new DatagramSocket(55556);
...
senddp = new DatagramPacket(packet_bits, packet_length, ClientIPAddr, RTP_dest_port);
RTPsocket.send(senddp);
然而,由于没有视频输出,数据包似乎永远不会到达客户端,并且最终会出现此错误。
live555 warning: no data received in 10s. Switching to TCP
在通过TCP模式切换到RTP之前。
我不确定UDP初始化是错误的还是接收到格式错误的RTP数据包但是没有将它们注册为mjpeg数据。关于到底发生了什么的任何建议都是非常有必要的!
仅仅是为了获取更多信息,我正在使用localhost对其进行测试,从TCP套接字检索ClientIPAddr并且还没有处理RTCP。