在本文中,我们将介绍使用 FFmpeg 进行 RTMP 流式处理的过程。
什么是 RTMP 协议?
实时消息传递协议 (RTMP) 是一种基于 TCP 的通信协议。它提供双向消息复用服务,主要用于承载视频流、音频流和消息流。
使用 FFmpeg 进行 RTMP 视频流的步骤
为了更好地理解使用 RTMP 进行视频流传输的完整过程,我们可以使用下图表示所涉及的步骤:
让我们详细讨论每个步骤。
第 1 步:编码
编码器使用任何一种支持的编解码器对音频/视频进行编码,并使用 RTMP 协议将数据传输到 RTMP-SERVER。
我们将使用 FFmpeg 编码并将数据发送到服务器。以下是对视频进行编码并将其传输到服务器的 FFmpeg 命令。
ffmpeg -re -i crowdrun.mp4 -c:v libx264 -c:v aac -f flv rtmp://localhost/show/stream
让我们来看看上面命令中使用的参数的含义。
-回覆 | 它是一个输入参数,指示 FFmpeg 每秒读取与输入视频帧率相同的帧数。它最常用于实时流媒体或摄像头输入。 |
-i crowdrun.mp4 | 这是我们用于讨论的输入视频,可以从这里下载 |
-c:v libx264 | 这里我们指定用于视频的编码器 |
-c:aac | 同样,这里我们指定音频编码器 |
-f flv | 它是一个输出参数,定义了视频的输出容器格式。对于RTMP协议,我们需要使用flv(Flash Video) 格式。 |
rtmp://localhost/show/流 | 这是视频的目标 RTMP 目的地。url 基于流媒体服务器的配置。 |
配置流媒体服务器后在终端上运行上述命令,如下所示:
现在,视频正在被编码并传输到服务器。
让我们进入下一步。
第 2 步:服务
RTMP-SERVER 接收提要并负责缩放内容并将其交付给互联网上的大量观众。
对于我们的测试,我们使用了 NginX 服务器和 RTMP 模块。服务器应用程序在本地安装和配置,因此localhost被用作 url。它被配置为使用相同的 RTMP 协议向最终用户提供内容。
第三步:播放
该过程的最后一步是接收内容并在最终用户的设备上使用它。由于服务器配置为使用 RTMP 协议进行服务,我们将再次使用它来演示此过程。尽管现在许多其他基于 HTTP 的替代协议(例如 HLS)由于其其他优势而被用于此目的。
如前几节所述,我们用于发布视频流的目标地址是:rtmp://localhost/show/stream
我们可以使用支持RTMP的VLC播放器来演示视频的播放。
使用 VLC 中的网络流选项并添加 RTMP url。
结论
在本文中,我们学习了如何使用 FFmpeg 使用 RTMP 视频流协议来流式传输视频。这打开了一个充满机遇的世界,因为人们现在可以流式传输到不同的视频流媒体平台,如 Facebook 和 Youtube。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。