инициирование RTSP-соединения по сотовой сети с помощью Android

Большинство сим-аккаунтов являются публичными динамическими. Большинство, если не все операторы сотовой связи, не разрешают входящие подключения к общедоступным динамическим IP-адресам. (Все равно 3g, может и не 4g / LTE) Проблема подключения не в динамических IPS, а в заблокированных входящих портах.

Итак, если бы я хотел транслировать видео с телефона Android по запросу (на основе информации, полученной из этого разговора (Потоковое видео с камеры Android на сервер)), какова будет цепочка событий для правильной инициации соединения.

Мое представление об этом (примерно):

  1. приложение на телефоне Android инициирует и поддерживает какое-то соединение с медиа-сервером (wowza или что-то в этом роде).
  2. В какой-то момент, когда серверу требуется видео с телефона, он использует открытое соединение для запроса видеопотока.
  3. Телефон Android отправляет поток rtsp на сервер.

Правильно ли это, и если да, то какой тип соединения следует использовать в качестве постоянного управляющего соединения. Кроме того, можно ли нажать rtsp или мне нужно будет сделать что-то еще?

Спасибо!


person michael    schedule 29.12.2011    source источник
comment
Я думаю, что использование объявления SDP может помочь ... но я не уверен, помогает ли это только в обнаружении устройства или в обработке фактического push-соединения.   -  person michael    schedule 03.01.2012
comment
bit.ly/wEXwJk IP-веб-камера - хороший пример того, чего я хочу достичь, включая проблему установления соединения. с телефоном. Вы должны инициировать соединения с телефона.   -  person michael    schedule 04.01.2012


Ответы (1)


Я знаю, что это старый вопрос, но если кто-то еще ищет что-то подобное, теперь доступно следующее:

http://developer.android.com/guide/google/gcm/index.html

По сути, это позволяет отправлять сообщение с сервера в приложение на устройстве Android (он заменяет C2DM, который делал то же самое).

Обновить

Google GCM теперь, в свою очередь, заменяется Google Firebase Cloud Messaging:

Используя подобную службу обмена сообщениями на основе could, выполните следующие действия:

  • Добавьте в приложение службу подписки на сообщения (например, Firebase)
  • Приложение регистрируется в облачной службе обмена сообщениями при запуске.
  • Когда серверу требуется видео с телефона (как указано в вопросах выше), сервер отправляет сообщение приложению.
  • Приложение открывает соединение с сервером потоковой передачи и начинает передавать видео на сервер.

Примечание: ниже есть комментарий о том, как этот подход не разрешает входящее соединение с сервера на телефон Android.

На самом деле потоковая передача с телефона обычно работает не так. Телефон фактически устанавливает «исходящее» соединение с потоковым сервером, на который затем транслирует видео. Другие устройства, желающие просмотреть видео, затем транслируют его здесь.

Есть несколько причин, по которым это предпочтительный подход, одна из ключевых заключается в том, что для поддержки качественной потоковой службы, которая будет воспроизводиться на большинстве распространенных устройств, браузеров, ОС и т. Д., Требуется перекодирование видео на несколько битрейтов и даже кодирование в некоторых ящиков, а также упаковки и подачи в соответствующем формате потоковой передачи. Выполнение всего этого на мобильном устройстве потребует больших вычислительных ресурсов и ресурсов хранения.

person Mick    schedule 10.10.2012
comment
отвечает на вопрос об Android, который, я думаю, можно использовать в качестве базы для других телефонов. Спасибо! - person michael; 17.10.2012
comment
@michael, я не совсем понимаю, как он отвечает на вопрос по андроиду. Итак, GCM позволяет отправлять сообщения с сервера на андроид, но как он разрешает входящее соединение с сервера на андроид? - person Felix; 10.03.2013
comment
@nissemand derp, ты прав. Я не знаю, почему я дал ему чек. Я еще не возвращался к этому. Я подозреваю, что стратегии в веб-сокетах могут перейти на это. - person michael; 10.03.2013
comment
@michael, черт возьми, я надеялся, что GCM станет решением :) Пока не понял, как GCM поможет с подключениями. - person Felix; 11.03.2013
comment
@nissemand, я начал (а потом сделал перерыв, а теперь начал снова) посмотреть на использование третьей стороны для облегчения рукопожатия. Это будет общий клиент для клиентской системы, вероятно, похожий на встряхивание руки BitTorrent. Телефоны представляют собой сложную задачу из-за того, что телекоммуникационные компании ограничивают свои политики межсетевого экрана своих абонентских устройств. - person michael; 11.03.2013
comment
Привет, вопрос выше, я считаю, спрашивал, какой тип соединения я должен использовать в качестве постоянного контрольного соединения. Служба облачных сообщений Google по ссылке в этом ответе эффективно сделает это за вас. Другими словами, вы можете просто заставить ваше приложение ждать управляющих сообщений, и вам не нужно выполнять какие-либо работы, чтобы поддерживать управляющее соединение в рабочем состоянии. Разве это не то, о чем вы спрашивали? Если это так, я отредактирую ответ, чтобы было понятнее - person Mick; 13.03.2013