私は現在、このプロジェクト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
RTPoverTCPモードに切り替える前。
UDPの初期化が間違っているのか、それとも不正な形式のRTPパケットを受信しているのに、それらをmjpegデータとして登録していないのかはわかりません。ここで正確に何が起こっているかについてのアドバイスは大いに義務付けられます!
追加情報として、ローカルホストを使用してこれをテストし、TCPソケットからClientIPAddrを取得し、まだRTCPを処理していません。