2013-09-11 5 views
0

Я реализую простой сервер RTSP, который должен передавать поток mjpeg поверх rtsp. Первой проблемой, с которой я столкнулся, был «зависающий» клиент RTSP (я пробовал vlc и openRTSP), когда я отвечаю на некоторые данные ответа: buffering issue with java communicating vlcПроблемы с выполнением ответа для запроса SETUP RTSP

Однако было легко узнать, что корень проблемы был упущен дважды \ r \ n в конце запроса. Я успешно кодировал ответы для OPTIONS и DESCRIBE, которые правильно обрабатываются на клиенте.

У меня возникла проблема при попытке реализовать SETUP. Когда я выход некоторый правильно отформатированный ответ RTSP НАСТРОЙКИ, как openRTSPvlc не обрабатывает ответ завершенный:

openRTSP rtsp://localhost:6666/autostream.mjpg 
Opening connection to 127.0.0.1, port 6666... 
...remote connection opened 
Sending request: OPTIONS rtsp://localhost:6666/autostream.mjpg RTSP/1.0 
CSeq: 2 
User-Agent: openRTSP (LIVE555 Streaming Media v2013.04.30) 


Received 158 new bytes of response data. 
Received a complete OPTIONS response: 
RTSP/1.0 200 OK 
CSeq: 2 
Public: OPTIONS, PAUSE, PLAY, SETUP, SET_PARAMETER, TEARDOWN 
Server: GStreamer RTSP server 
Date: Tue, 10 Sep 2013 19:56:53 GMT 


Sending request: DESCRIBE rtsp://localhost:6666/autostream.mjpg RTSP/1.0 
CSeq: 3 
User-Agent: openRTSP (LIVE555 Streaming Media v2013.04.30) 
Accept: application/sdp 


Received 484 new bytes of response data. 
Received a complete DESCRIBE response: 
RTSP/1.0 200 OK 
CSeq: 3 
Content-Type: application/sdp 
Content-Base: rtsp://localhost:6666/autostream.mjpeg/ 
Server: GStreamer RTSP server 
Date: Tue, 10 Sep 2013 19:56:53 GMT 
Content-Length: 279 

v=0 
o=- 1188340656180883 1 IN IP4 127.0.0.1 
s=Session streamed with GStreamer 
i=rtsp-server 
e=NONE 
t=0 0 
a=tool:GStreamer 
a=type:broadcast 
a=control:* 
a=range:npt=0,000000-119,961667 
m=video 0 RTP/AVP 96 
c=IN IP4 127.0.0.1 
a=rtpmap:96 JPEG/90000 
a=control:stream=0 

(plus 2 additional bytes) 
Opened URL "rtsp://localhost:6666/autostream.mjpg", returning a SDP description: 
v=0 
o=- 1188340656180883 1 IN IP4 127.0.0.1 
s=Session streamed with GStreamer 
i=rtsp-server 
e=NONE 
t=0 0 
a=tool:GStreamer 
a=type:broadcast 
a=control:* 
a=range:npt=0,000000-119,961667 
m=video 0 RTP/AVP 96 
c=IN IP4 127.0.0.1 
a=rtpmap:96 JPEG/90000 
a=control:stream=0 

Created receiver for "video/JPEG" subsession (client ports 57074-57075) 
Sending request: SETUP rtsp://localhost:6666/autostream.mjpeg/stream=0 RTSP/1.0 
CSeq: 4 
User-Agent: openRTSP (LIVE555 Streaming Media v2013.04.30) 
Transport: RTP/AVP;unicast;client_port=57074-57075 


Received 215 new bytes of response data. 

И ничего не происходит после этого сообщения. Я предполагаю, что что-то происходит с RTP и RTCP за кулисами, но каков способ их отладки? VLC и openRTSP не дают достаточно подробных сведений об этом.

Любые идеи?

+0

И это поведение не зависит от кода ответа RTSP: ответ на ошибку не обрабатывается одинаково, на стороне клиента ничего не происходит. –

ответ

0

Как всегда, отправляя глупые вопросы StackOverflow помогает выяснить проблему самостоятельно (выглядит как своего рода закон Мерфи;! Я должен разместить его 3 часа назад, чтобы спасти мою спящую)

Ключевое слово был

(plus 2 additional bytes) 

(openRTSP)

(plus 2 additional bytes) 
[0x7f73900013f8] live555 demux debug: RTP subsession 'video/JPEG' 

(VLC)

Я получил hardcoded второй/r/n в ответе DESCRIBE, несмотря на то, что у него есть тело сообщения этих респондентов. Для ответа, имеющего пустое тело, должно быть двойное/r/n.