使用 FFmpeg 进行 RTMP 视频流传输

在本文中,我们将介绍使用 FFmpeg 进行 RTMP 流式处理的过程。

什么是 RTMP 协议?

实时消息传递协议 (RTMP) 是一种基于 TCP 的通信协议。它提供双向消息复用服务,主要用于承载视频流、音频流和消息流。

使用 FFmpeg 进行 RTMP 视频流的步骤

为了更好地理解使用 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 基于流媒体服务器的配置。

配置流媒体服务器后在终端上运行上述命令,如下所示:

FFmpeg 流式传输 RTMP
使用 FFmpeg 进行 RTMP 流式传输

现在,视频正在被编码并传输到服务器。

让我们进入下一步。

第 2 步服务 

RTMP-SERVER 接收提要并负责缩放内容并将其交付给互联网上的大量观众。 

对于我们的测试,我们使用了 NginX 服务器和 RTMP 模块。服务器应用程序在本地安装和配置,因此localhost被用作 url。它被配置为使用相同的 RTMP 协议向最终用户提供内容。 

第三步:播放 

该过程的最后一步是接收内容并在最终用户的设备上使用它。由于服务器配置为使用 RTMP 协议进行服务,我们将再次使用它来演示此过程。尽管现在许多其他基于 HTTP 的替代协议(例如 HLS)由于其其他优势而被用于此目的。 

如前几节所述,我们用于发布视频流的目标地址是:rtmp://localhost/show/stream 

我们可以使用支持RTMP的VLC播放器来演示视频的播放。

使用 FFmpeg 进行 RTMP 流式传输

使用 VLC 中的网络流选项并添加 RTMP url。

使用 FFmpeg 进行 RTMP 流式传输

结论

在本文中,我们学习了如何使用 FFmpeg 使用 RTMP 视频流协议来流式传输视频。这打开了一个充满机遇的世界,因为人们现在可以流式传输到不同的视频流媒体平台,如 Facebook 和 Youtube。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论