将 esp-32 摄像头流式传输到 RTMP 服务器(例如 YouTube)

Ish*_*ani 6 c arduino nginx rtmp esp32

我正在为一个需要使用相机流的项目进行研究。经过多次搜索和谷歌搜索后,我还没有找到直接将 ESP-32 摄像头流传输到我自己的 RMTP 服务器的解决方案。

已经尝试过的解决方案:

1)我尝试过使用 Raspberry pi 重新串流 ESP-32-cam,效果很好,但不是我想要的东西{由于不想使用 Raspberrypi 进行重新串流而被丢弃} 在此输入图像描述

2)ESP-32-cam:使用时间触发器进行记录和FTP传输(未尝试,但认为这不是一个好方法)。{由于不是实时而被丢弃}

3)ESP32尝试使用HTTPClient将图像文件发送到php我已经尝试过,但它仅适用于图像,其次代码是在循环函数中执行的,因此由于保存和发布操作而存在很长的延迟。

请注意:我没有考虑 ESP-32 cam 作为流服务器并且浏览器可以连接到它的解决方案,如下所示:https: //www.hackster.io/BnBe_Club/9-rtsp-video-streamer-using- the-esp32-cam-board-8832b4 在此输入图像描述

我已经尝试过了,它运行良好,但不适用于涉及流式传输到 RTMP 服务器而不重新流式传输的用例。

**

我想实现 ESP-32 CAM 可以直接发布/流式传输到 RTMP 云托管服务器,技术上似乎是可能的,因为 ESP-32 cam 支持连接 wifi 并访问云服务器

** 在此输入图像描述

在谷歌上,我发现了类似的线程:https://forum.arduino.cc/index.php?topic =634605.0 topic=634605.0 提供解决方案的人没有兴趣分享它。

下面的代码可能需要一些修改,可以参考: https: //github.com/espressif/esp32-camera

Cod*_*007 1

您应该阅读(并理解)您发布的链接。
有两种选择。其中一种由 rtsp 库使用,其中 Arduino 充当 rtsp 服务器,因此 vlc 等程序可以在桌面上解码流。
或者 BnBe 解决方案,其中 Esp32cam 充当客户端,而服务器(例如 youtube)可以接收流并对其进行解码。
在这种情况下,ESP 通过 AP 连接到互联网。可以使用浏览器组件来配置它。
恕我直言,在客户端服务器场景中没有第三种解决方案(一个充当客户端,另一个充当服务器)。仔细阅读 BnBe 解决方案的代码。如果你想硬编码你的配置 - 很容易做到。
您的评论 qoute:“涉及流式传输到 RTMP 服务器而不重新流式传输的用例”抱歉,我至少在我的代码中看不到这种情况发生您的意思可能
是作者从摄像头获取流(方法 esp_camera_fb_get()),这不是“重新流媒体”是由于乐鑫的封闭源造成的,这是访问准备好的摄像机流的唯一方法。如果你不喜欢这个,你就必须投资其他硬件。
您用图形编辑了您的问题。这就是 BnBe 解决方案的作用!所以没有重新流媒体。
OP 希望将 espressif 函数 esp_camera_fb_get() 的结果直接发送到 rtmp 云服务。这在技术上是不可能的,因为 API 只允许获取编码为 mpeg 的帧缓冲区(基本上是粘合在一起的单个 jpg)。因此,您必须将帧缓冲区转换为有效的 rtmp 流。即使您查看 OV2640 的数据表,您也会发现源已关闭,并且只能通过 API 访问固件。所以除了逆向工程之外,没有任何可能。
使用 BnBe 解决方案,它可以工作并为您节省 1/2 年的开发时间,如果您是一名优秀的编码员,但忘记了多个流,则可以改进它 ESP32 CPU 大麦可以处理一个!
-> 特别查看 CRtspSession.h 和 CRtspSession.cpp 以及 OV2640.h 和 OV2640.cpp 的代码(在那里你会找到 cam 模块的所有 API 函数)