RTSP клиент в андроид - PullRequest
       63

RTSP клиент в андроид

7 голосов
/ 29 июля 2009

Я пишу RTSP-клиент в Android. Я могу получить ответы на все запросы то есть.,

  1. ОПИСАТЬ, он отправляет обратно 200 OK
  2. НАСТРОЙКА с транспортом: RTP / AVP: одноадресная передача: client_port = 4568: 4569 вернул сообщение 200 OK.
  3. Отправлено PLAY и получено сообщение OK

После этого как получить аудио и видео кадры?

Я искал в блогах, но все говорят, что слушают на client_port, но я не получаю никаких пакетов.

Пожалуйста, дайте мне знать, что я делаю правильно.

Ответы [ 4 ]

5 голосов
/ 30 июля 2009

Вы можете знать, а можете и не знать, но в Android встроена поддержка RTSP с использованием VideoView.

http://developer.android.com/reference/android/widget/VideoView.html

Это может сократить время разработки ... или может оказаться совершенно бесполезным, если вы пытаетесь свернуть свой собственный стек RTSP.

3 голосов
/ 09 августа 2009

RTSP используется только для запуска потоковой передачи. Это дает вам SDP описание реальных потоков. Вы должны управлять соединением RTCP и соединением RTP на канал (аудио / видео). Используемые порты являются "client_port".

Довольно сложно с нуля кодировать стек RTSP / RTCP / RTP. Вы можете взглянуть на библиотеку live555 , которая реализует такой стек в c ++.

1 голос
/ 11 ноября 2009

Попробуйте сначала с локальным потоковым сервером Darwin, установленным в вашей локальной сети. Таким образом, брандмауэр не имеет значения. Поток будет работать.

Если вы хотите попробовать с внешнего сервера, то:

1) Проверьте client_ports, упомянутые в ответе SERVER, некоторые серверы предлагают порты, отличные от запрошенных. Вы должны использовать порты, предложенные сервером.

2) Если порты верны, то вы можете отправлять 64-байтовые пустые пакеты с каждого из портов UDP на сервер (так называемые «устройства открывания дверей»).

3) Если вышеупомянутые два не исправляют это, проверьте журналы на стороне сервера. Сервер может закрывать порты UDP.

1 голос
/ 08 октября 2009

Поместите сниффер в сеть, вы должны увидеть UDP-пакет с портом назначения 4568, нацеленный на ваш IP-адрес.

С приличным сниффером вы сможете увидеть диалог rtsp. Может быть, вы что-то упускаете в ответах

Вы также должны проверить содержимое ответа SETUP, чтобы увидеть, был ли выбранный вами порт принят.

Что нужно проверить:

  • Прослушивание в UDP.
  • Правила брандмауэра.
  • Диапазон запроса воспроизведения: не указывайте ни одного, чтобы быть уверенным, что сервер будет что-то воспроизводить.

Если вы находитесь за маршрутизатором или брандмауэром, вы, вероятно, ничего не получите, потому что ваш маршрутизатор / брандмауэр не знает, что делать с входящими пакетами UDP

...