Потоковая передача камеры esp-32 на RTMP-сервер, например на YouTube - PullRequest
0 голосов
/ 29 марта 2020

Я занимаюсь исследованием проекта, в котором мне нужно играть с видеокамерами. После нескольких ударов и поисков, я не могу даже приблизиться к решению для потоковой передачи потока с камеры ESP-32 напрямую на мой собственный сервер RMTP.

Уже опробованные решения:

1) У меня есть попытался перенаправить ESP-32-cam с Raspberry pi, который работает хорошо, но не то, что я ищу {отказался, потому что не хочу использовать Raspberrypi для повторных целей} enter image description here

2) ESP-32-cam: запись и передача по FTP с временными триггерами (не пробовал, но считал, что это не очень хороший подход). {отбрасывается, потому что это не в реальном времени}

3) ESP32 Попробуйте отправить файл изображения на php с HTTPClient Я пробовал, но это работает только для изображений, а во-вторых, код выполняется в Функция l oop, так что из-за длительных операций сохранения и публикации возникает большая задержка.

Обратите внимание: я не смотрю на решение, в котором камера ESP-32 действует как потоковый сервер, и браузер может подключиться к ней. как: https://www.hackster.io/BnBe_Club/9-rtsp-video-streamer-using-the-esp32-cam-board-8832b4 enter image description here

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

**

Я хочу, чтобы ESP-32 CAM мог отправлять / передавать напрямую на облачный сервер RTMP, технически это представляется возможным, поскольку камера ESP-32 поддерживает подключение к wifi и доступ к облачному серверу

** enter image description here

В Google я нашел похожую тему: https://forum.arduino.cc/index.php?topic=634605.0 Парень с решением не заинтересован в том, чтобы делиться им. * 1 040 *

может потребоваться изменение в приведенном ниже коде. МОЖЕТ БЫТЬ ref: https://github.com/espressif/esp32-camera

1 Ответ

1 голос
/ 29 марта 2020

Вы должны прочитать (и понять) ваши опубликованные ссылки.
Есть два варианта. Один из них используется библиотекой rtsp, где Arduino выступает в роли сервера rtsp, поэтому такие программы, как vl c, могут декодировать поток на рабочем столе.
Или решение BnBe, где Esp32cam выступает в роли клиента, а серверы, такие как youtube, могут получать поток. и декодировать его.
ESP в этом сценарии через AP, подключенную к inte rnet. Для его настройки может использоваться компонент браузера.
Имхо, в сценарии клиент-сервер не существует третьего решения (один действует как клиент, а другой - как сервер). Внимательно прочитайте код решения BnBe. Если вы хотите жестко закодировать ваш конфиг - это легко сделать.
Ваше замечание qoute: «сценарий использования, который включает потоковую передачу на RTMP-сервер без перезаписи». Извините, я не вижу, чтобы это происходило, по крайней мере, в коде, который у меня есть
Что вы имеете в виду, perhabs, что авторы получают поток с камеры (метод esp_camera_fb_get ()) это не «перераспределение» из-за закрытого источника, потому что это единственный способ получить доступ к подготовленному потоку камеры. Если вам не нравится это, вы должны инвестировать в другое оборудование.
Вы отредактировали свой вопрос с помощью графика c. Это то, что делает решение BnBe! Поэтому НИКАКОГО повторного потока.
ОП хочет отправить результат функции espressif esp_camera_fb_get () непосредственно в облачную службу rtmp. Технически это невозможно, потому что API предоставляет доступ только для захвата буфера кадра, закодированного как mpeg (в основном одиночные jpgs, склеенные вместе). Таким образом, вы должны преобразовать свой кадровый буфер в действительный поток RTMP. Даже если вы загляните в таблицу данных OV2640, вы увидите, что источник закрыт и возможен только API-доступ к прошивке. Поэтому, за исключением обратного объединения, это невозможно.
Используйте решение BnBe, оно работает и экономит вам 1/2 года разработки, вы можете улучшить его, если вы хороший кодер, но забыли о множественных потоках. Ячмень процессора ESP32 обрабатывает один ! -> особенно обратите внимание на код CRtspSession.h и CRtspSession. cpp, а также OV2640.h и OV2640. cpp (там вы найдете все функции API модуля cam)

...