龙空技术网

树莓派打造RTMP直播服务器

CharlesLu哈哈 1125

前言:

现在各位老铁们对“nginxrtmp电视”大约比较关怀,我们都想要学习一些“nginxrtmp电视”的相关内容。那么小编在网上网罗了一些有关“nginxrtmp电视””的相关资讯,希望看官们能喜欢,大家一起来了解一下吧!

2020年的疫情让许多人不得不接触直播,也让我们看到,网络直播可以参与到生活的方方面面。笔者也曾苦苦寻找低成本直播方案,好在总算找到了高性价比的直播服务平台——腾讯云直播。腾讯云直播的优点是不需要二次开发,流量费用便宜;但缺点也很明显:需要自带备案域名入场。

事后我开始思考:如果没有备案的域名,也不想付费,能不能做到零成本直播?答案是可以的,墙角积灰的树莓派3(Raspberry PI 3 卡片电脑)能做到这点。

树莓派

1 概览

OBS:Open Broadcaster Software,一个自由、开源、跨平台的视频录制和视频实时流软件。

RTMP Server:Real Time Messaging Protocol Server,实时消息传输协议服务器。

Device:用户设备,如手机、平板、智能电视等等。

直播技术可以简化为:主播在PC或Mac上安装OBS软件,将你要直播的内容(音频、视频、图片......)推送到RTMP服务器,这个过程是“推流”;用户在手机、平板等设备上从RTMP服务器获取流媒体,这个过程是“拉流”。

本文所有内容都是围绕上述的概览示意图展开,主要内容包括:

介绍树莓派配置RTMP服务器的详细步骤;介绍端到端的直播推流/拉流步骤。

2 配置

2.1 树莓派安装docker

sudo curl -fsSL  | bash -s docker --mirror Aliyu

查看docker版本

2.2 树莓派运行nginx-rtmp容器

nginx-rtmp是github上的一个开源项目tiangolo/nginx-rtmp-docker()。但该项目仅支持x86架构,不支持树莓派3的armv7架构。我做了些修改适配树莓派3,并重新编了armv7版docker镜像。镜像地址:

#拉取镜像docker pull charleslucloud/nginx-rtmp:1.18.0#运行容器docker run -d -p 1935:1935 --name nginx-rtmp charleslucloud/nginx-rtmp:1.18.0

运行nginx-rtmp容器

2.3 【可选】路由器配置端口映射

这是可选步骤。由于我的树莓派在家庭网络下运行(树莓派的本地IP地址是内网地址),默认情况只能在内网推流,内网拉流。这里就有很大的局限性,因为主播和用户都离不开家里的路由器。

但我希望推流和拉流不受限于局域网,流媒体能通过公网直播。这就需要路由器配置好DDNS和端口转发,细节不再展开赘述,可以参考《用小米路由器轻松实现端口映射》。

我的路由器DDNS和端口转发配置如下:

DDNS配置

1935端口转发配置

2.4 PC安装OBS软件

个人电脑上下载安装OBS软件不再赘述,官方下载地址:

3 直播

3.1 开启OBS推流

OBS配置

OBS配置步骤如下:

1)点击“设置”按钮;

2)点击“推流”按钮;

3)“服务”选择“自定义”;

4)“服务器”:形如:

rtmp://<ip_of_host>/live,<ip_of_host>填树莓派的IP地址192.168.0.213。不过我的路由器配置过DDNS,因此能用域名代替IP;

5)“串流密钥”:自定义一个密码,如1234567;

6)点击“应用”按钮;

7)添加“来源”,也就是直播内容的输入源,可以自由选择捕获视频输入、音频输入、图像、VLC视频源(本地视频)等等;

8)点击“推流”按钮。推流开始后,OBS右下角的绿色小方块显示上传速度。

推流演示

3.2 VLC播放串流

这里使用windows的开源跨平台媒体播放器VLC演示,你也可以在手机上使用VLC。

1)打开VLC;

2)点击“媒体”—“打开网络串流”,输入网络URL,形如:

rtmp://<ip_of_host>/live/<key>

VLC配置

VLC拉流演示

4 结语

树莓派打造的RTMP服务器仅仅只是个demo,它资源有限无法胜任大量用户接入,也无法作为商业用途。不过好玩的是,面对现实中遇到的问题,树莓派总能让我们有不一样的解决方案。在一对一直播场景(现场画面音频实况转播),或许用上树莓派方案恰好能满足要求,又接近零成本。

如果你有更巧妙的想法,请在评论区留言。不足之处,也请不吝指教。

关注我,获取更多有趣的更新。

标签: #nginxrtmp电视