RTSP получение потоковых данных - PullRequest
3 голосов
/ 24 марта 2012

У меня есть IP-камера, которая может передавать мне медиа-данные по RTSP.

Я разрабатываю приложение для получения медиа-данных.

Я использую C ++ и Qt3.

Я создаю сокет. подключите его к моему устройству IP на порт = 554.

Я делаю первый запрос

SETUP rtsp://192.168.4.160/ufirststream RTSP/1.0\r\n
CSeq: 1\r\n
Transport: RTP/AVP; client_port=554\r\n\r\n

И получите ответ:

RTSP/1.0 200 OK
CSeq: 1
Date: Sat, Mar 24 2012 17:24:59 GMT
Transport: RTP/AVP;unicast;destination=192.168.4.186;source=192.168.4.160;client_port=0-1;server_port=2000-2001
Session: 413F4DDB

Я анализирую его для получения значения сеанса gettin и выполняю следующий запрос:

PLAY rtsp://192.168.4.160/ufirststream RTSP/1.0
CSeq: 1
Session: 413F4DDB

И сервер говорит:

RTSP/1.0 200 OK
CSeq: 1
Date: Sat, Mar 24 2012 17:25:02 GMT
Session: 413F4DDB
RTP-Info: url=rtsp://192.168.4.160/ufirststream/track1;seq=6716;rtptime=406936711

А как мне получить медиа-данные ??? Я думал, что PLAY-метод заставляет сервер давать мне поток, но он дает мне только URL для rtsp и другой информации ...

Мне нужен двоичный поток с камеры, вы можете дать совет для моего следующего шага ??

1 Ответ

4 голосов
/ 24 марта 2012

Заголовок Transport запроса SETUP указывает, какой протокол будет использоваться для отправки потока, а также client_port порты, на которых ваш клиент будет прослушивать.

Попробуйте открыть 2 последовательных порта UDP и передать этот диапазон как client_port=port1-port2 вместо 554. Эти два порта будут использоваться для потоков RTP и RTCP (видео и данные управления).

Кроме того, номер порта RTP должен быть четным числом, а порт RTCP - следующим нечетным числом (см. этот вопрос , если вы хотите, чтобы диапазон портов был случайным, а не выбранным пользователем).

...