前言:
现在各位老铁们对“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
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
2.3 【可选】路由器配置端口映射
这是可选步骤。由于我的树莓派在家庭网络下运行(树莓派的本地IP地址是内网地址),默认情况只能在内网推流,内网拉流。这里就有很大的局限性,因为主播和用户都离不开家里的路由器。
但我希望推流和拉流不受限于局域网,流媒体能通过公网直播。这就需要路由器配置好DDNS和端口转发,细节不再展开赘述,可以参考《用小米路由器轻松实现端口映射》。
我的路由器DDNS和端口转发配置如下:
2.4 PC安装OBS软件
个人电脑上下载安装OBS软件不再赘述,官方下载地址:
3 直播
3.1 开启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>
4 结语
树莓派打造的RTMP服务器仅仅只是个demo,它资源有限无法胜任大量用户接入,也无法作为商业用途。不过好玩的是,面对现实中遇到的问题,树莓派总能让我们有不一样的解决方案。在一对一直播场景(现场画面音频实况转播),或许用上树莓派方案恰好能满足要求,又接近零成本。
如果你有更巧妙的想法,请在评论区留言。不足之处,也请不吝指教。
关注我,获取更多有趣的更新。
标签: #nginxrtmp电视