Проблемы с реализацией ответа на запрос SETUP RTSP
Я реализую простой RTSP-сервер, который должен передавать mjpeg через rtsp. Первой проблемой, с которой я столкнулся, был "зависший" RTSP-клиент (я пробовал vlc и openRTSP), когда я отвечал с некоторыми данными ответа: проблема буферизации с Java-связью vlc
Однако было легко обнаружить, что в конце запроса пропущена двойная последовательность \ r \ n. Я успешно закодировал ответы для OPTIONS и DESCRIBE, которые правильно обрабатываются на клиенте.
Я столкнулся с проблемой, когда пытался реализовать SETUP. Когда я вывожу правильно отформатированный ответ RTSP в SETUP, оба 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 не дают достаточно подробных сведений об этом.
Есть идеи?
1 ответ
Как всегда, отправка глупых вопросов в stackru помогает выяснить проблему самостоятельно (похоже на закон Мерфи; я должен опубликовать его 3 часа назад, чтобы сохранить сон!)
Ключевое слово было
(plus 2 additional bytes)
(OpenRTSP)
(plus 2 additional bytes)
[0x7f73900013f8] live555 demux debug: RTP subsession 'video/JPEG'
(VLC)
Я жестко закодировал второй /r/n в ответе на DESCRIBE, несмотря на наличие в теле сообщения этого ответа. Должен быть двойной /r/n для ответа с пустым телом.