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

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

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

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

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

Благодарность!

4
michael 30 Дек 2011 в 03:24
Я думаю, что использование объявления SDP может помочь... но я не уверен, помогает ли это только в обнаружении устройства или в обработке фактического push-соединения.
 – 
michael
3 Янв 2012 в 00:53
bit.ly/wEXwJk IP-веб-камера — хороший пример того, чего я хочу добиться, включая проблему инициирования соединения. с телефоном. Вы должны инициировать соединения с телефона.
 – 
michael
4 Янв 2012 в 04:08

1 ответ

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

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

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

Обновить

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

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

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

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

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

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

-1
Mick 10 Июн 2016 в 12:35
Отвечает на вопрос для Android, который, я думаю, можно использовать в качестве базы для других телефонов. Спасибо!
 – 
michael
17 Окт 2012 в 19:22
@michael, я не совсем понимаю, как это отвечает на вопрос для Android. Итак, GCM позволяет отправлять сообщения с сервера на андроид, но как он разрешает входящее соединение с сервера на андроид?
 – 
Felix
10 Мар 2013 в 05:38
Дерп, ты прав. Я не знаю, почему я дал этому чек. Мне еще предстоит пересмотреть это. Я подозреваю, что стратегии в веб-сокетах могут быть перенесены на это.
 – 
michael
10 Мар 2013 в 22:42
@michael, черт возьми, я надеялся, что GCM станет решением :) Пока я не понял, как GCM поможет с подключениями.
 – 
Felix
11 Мар 2013 в 01:58
@nissemand, я начал (а затем сделал перерыв, а теперь снова начал) рассматривать возможность использования третьей стороны для облегчения рукопожатия. Это будет обычная клиент-клиентская система, вероятно, похожая на рукопожатие битторрента. Телефоны представляют собой сложную задачу из-за того, насколько ограничительны политики брандмауэров абонентских устройств.
 – 
michael
11 Мар 2013 в 09:22