Подтвердить что ты не робот

Преобразование видео входного потока в RTMP

Я хочу передать видеозапись с моего телефона Android на сетевой медиасервер.

Первая проблема заключается в том, что при установке вывода MediaRecorder в сокет в потоке отсутствуют заголовки размера mdat. Это можно устранить путем предварительной обработки этого потока локально и добавления отсутствующих данных в поток для создания допустимого выходного потока.

Вопрос в том, как исходить оттуда.

Как я могу запустить вывод этого потока в потоке RTMP?

4b9b3361

Ответ 1

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

Общей альтернативой в этом случае является использование RTSP. Он предоставляет сопоставимый формат сеанса, который имеет свой собственный RFC, а его структура пакета в сочетании с RTP очень похожа (без некоторых деталей) на ваш желаемый протокол. Вы можете выполнить необходимые исправления здесь, чтобы преобразовать RTP/RTSP в RTMP, но, как уже упоминалось, такие усилия в настоящее время находятся за пределами области разработки вашего приложения.

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

Вы можете, например, следовать этому руководству для записи и воспроизведения с использованием Livu, Wowza и Adobe Flash Player, разговаривая с разработчик Livu о лицензировании своего клиента. Или вы можете использовать эту клиентскую библиотеку и ее полный пример Android-рекордера для создания вашего клиента.

Подводя итог:

RTSP

RTMP

Желаем удачи в вашем приложении. Я признаю, что у меня есть менее полное понимание всех этих библиотек, но они кажутся стандартными решениями в этом пространстве на момент написания этой статьи.

Изменить:

В соответствии с OP, идя по библиотеке RTMP:

Короче: требуется больше работы. Другие ответы и улучшения этих примеров - вот что нужно здесь.

Ответ 2

Если вы используете веб-браузер на устройстве Android, вы можете использовать WebRTC для захвата видео и записи на стороне сервера, то есть Web Call Server 4

Таким образом, полный путь:

Android Chrome [WebRTC] > WCS4 > запись

Итак, здесь вам не нужен протокол RTMP.

Если вы используете автономное приложение RTMP, вы можете использовать любой сервер RTMP для записи видео. Как я знаю, Wowza поддерживает запись H.264 + Speex.