【问题标题】:Using ffmpeg to stream live video from a raspberry pi to a web server for distribution使用 ffmpeg 将实时视频从树莓派流式传输到 Web 服务器以进行分发
【发布时间】:2019-03-07 20:03:17
【问题描述】:

我正在尝试构建一个设备,该设备将在 raspberrypi 上编码 h.264 视频并将其流式传输到云中的单独 Web 服务器。我遇到的主要问题是我搜索的大多数实现要么将网络服务器直接放在 pi 上,要么让嵌入式播放器直接从设备播放视频。

无论我在哪个网络上,我都希望它几乎即插即用,即无需任何类型的端口转发,我需要做的就是将设备连接到网络,并且流将在网页上可见。

该问题的一个可能解决方案是简单地将 base 64 中的帧编码为 jpeg 并将它们发送到网络服务器上的端点,但是,这是对带宽的巨大浪费,并且不允许 h.264 的帧速率。

对一些可用于执行此操作的可能技术有任何想法吗?

我觉得它可以通过一些 websockets 或 zmq 和 ffmpeg 以某种方式完成,但我不确定。

【问题讨论】:

    标签: linux video ffmpeg stream video-streaming


    【解决方案1】:

    如果您能提供更多关于设备架构的描述,将会很有帮助。由于它是一个 RPI,它可能也被用于通过摄像头扩展端口进行视频采集。如果是这种情况,您可以使用可用的命令行工具组合访问视频设备并在流式传输方面做很多事情。

    以下内容会从摄像机主机生成 RTMP 流。

    raspivid [preferred options] -o - | ffmpeg -i - [preferred options] rtmp://[IP ADDR]/[location]
    

    从那里,FFmpeg 将为您做很多繁重的工作。

    这将使远程主机能够访问 RTMP 流。

    可以补充该架构的其他工具可能是ffserver,其中可以获取来自 rpi 主机的 rtmp 流,然后将其提供给各种客户端,例如网页中的播放器。快速浏览显示ffserver 可能已过时,但有类似的组件。

    【讨论】:

    • 抱歉,我将使用 USB 网络摄像头。在其他示例中,我发现大部分代码用于发送 RTMP 流。没有涉及的部分是如何在服务器端接收流和流式传输。
    • 请更新您的问题以包括 RTMP 接收方的架构需求。看看 Wowza 的服务,了解这是如何在商业上完成的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多