JavaScript fwdays conf: Node.js, Performance, Tests, Nuxt.js, DevTools, GraphQL | March 14
×Закрыть

Стрімінг з Android по rtmp

Всім привіт!

Прошу проконсультувати чи/або допомогти з реалізацією наступної задачі:
маємо планшет з Android 5.1, до якого підключено 2 веб-камери по USB. Потрібно зображення з цих камер передати по RTMP.
Клас Camera чи Camera2 не підходить, так як не дозволяє відкрити 2 камери одночасно (точніше не дозволяє створити 2 екземпляри). Бібліотеки для передачі відео по rtmp, що знайшов на github, написані для роботи з вище вказаними класами.

Може хто реалізовував подібну задачу — прошу поділитись досвідом.

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Дійшов до того, що спробував 3 бібліотеки і не можу відправити потік...
Бракує знань в плані обробки відео, думаю, що десь не співпадають формати, як дебажити такі речі теж не можу знайти.
Хто може проконсультувати в приватних повідомленнях чи іншим способом — прошу допомогти, потрачений час оплачу якщо буде потрібно.

Для роботи із стеком rtmp наче познаходив інструментарій, наприклад сподобалася ця бібліотека — github.com/...​ibRtmp-Client-for-Android.
Правда повністю ще не протестив....так як не можу зрозуміти як з MediaCodec-a забрати потік в h264, в прикладах які знаходив — всі працюють в синхронному режимі через quenue outputBuffers.
У мене в даний момент є raw в форматі ByteBuffer, який я отримую через callback, як мені передати цей raw в MediaCodec і отримати на виході byte[] з h264 потоком?

Натрапив на цікаву статтю (правда трохи пізно, частину з описаного вже сам перепробував і витратив на це багато часу) — agilie.com/...​-live-video-streaming-app.
Наразі зупинився на цих проектах:
— github.com/...​p-rtsp-stream-client-java
— github.com/saki4510t/UVCCamera

FFmpeg поки відкинув через відносно великий об’єм (>10 МБ для кожної платформи). Спочатку також хотів його використовувати...хоча хто зна, може й доведеться)
На скільки я зрозумів — gstreamer, у випадку Android, може виступати тільки як клієнтський додаток?

Если «клиентское приложение» означает «клиент, который конектится к серверу» — то нет. Сервак тоже можно поднять. У меня вполне работал RTSP/RTP сервак с mjpeg потоком.

FFmpeg поки відкинув через відносно великий об’єм (>10 МБ для кожної платформи).

C gstreamer та же история. В зависимости от используемых либ/функционала он тоже может нормально так прирости в размере. Ну и он еще за собой glib тянет, к сожалению. Что тоже не делает конечное приложение меньше.

Для того что бы FFmpeg работал c RTMP, нужно еще к нему librtmp подключать, а librtmp может еще OpenSSL требовать для поддержки защищенных стримов.
Сам когда-то для iOS делал подобную задачу.

Могу в личке рассказать с какими проблемами столкнулся, так как FFmpeg в плане документации черт голову сломит, плюс нужно было изучать исходники так как нашел мелкую ошибку в FFmpeg для iOS.

Можете еще глянуть: github.com/shogo4405/HaishinKit.kt

Но он использует Camera2 API, я так понимаю вам нужно напрямую с USB host работать для доступа к внешним 2м камерам одновременно. Но можно использовать отдельные классы что бы не тащить тот же FFmpeg+librtmp.

Я пару лет назад для похожей задачи, но под протокол rtsp, использовала враппер ffmpeg-а.

Может есть смысл посмотреть в сторону gstreamer?

Подписаться на комментарии