【技术分享】如何在嵌入式Linux平台上使用Nginx搭建RTMP流媒体服务器?

电子说

1.2w人已加入

描述

  RTMP作为目前主流的流媒体传输协议,广泛应用于音视频领域。那么我们如何快速在嵌入式板子上搭建起自己的rtmp流媒体服务器?本篇文章将带大家实践一下。

 

致远电子  概述

Nginx是一个以高效稳定著称的高性能的HTTP和反向代理web服务器,它同时也是基于事件驱动开发的异步高性能跨平台服务器。Nginx-RTMP是基于Nginx框架的模块开发,很好继承了Nginx的异步高性能以及扩展性好的优点。RTMP 是 Real Time Messaging Protocol (实时消息传输协议)的首字母缩写。该协议基于TCP协议簇,是 Adobe 公司为 Flash/AIR 平台和服务器之间音、视频及数据传输开发的实时消息传送协议。在 RTMP 协议中,视频必须是 h264 编码,音频必须是 AAC 或 MP3编码,且多以 flv 格式封包。目前 RTMP 是主流的流媒体传输协议。而Nginx-RTMP模块主要是对rtmp协议的实现,广泛应用于音视频领域。那么以下将通过一个简单的视频监控方案带大家了解下Nginx-RTMP流媒体服务器的搭建过程。  

致远电子  方案实现

以M3568平台为例,在嵌入式Linux系统上搭建Nginx-RTMP流媒体服务器以及通过ffmpeg/gstreamer实现简单的推拉流过程。实现框架如图1所示。致远电子

图1

  • 采集M3568板子上的摄像头视频流,使用gstreamer/ffmpeg进行RTMP推流到板子上的nginx服务器(nginx通过rtmp模块提供rtmp服务),然后在同个局域网内使用vlc播放器(或其他客户端)从nginx服务器获取该实时视频流。

1. 前期准备

1.1 硬件

  • M3568核心板;
  • M3568-EV-Board底板;
  • usb摄像头(如果没有摄像头可以使用mp4视频文件代替做测试)。

1.2 软件

  • PC上安装vlc播放工具;
  • 带nginx-rtmp-module模块编译的nginx安装包(nginx-install.tar)。
(备注:本篇文章没有展开讲述Nginx + nginx-rtmp-module的交叉编译过程以及具体步骤,但此部分内容已发布在ZLG开发者社区上,可通过链接 https://z.zlg.cn/articleinfo?id=853011 进行访问。)2. 实现步骤

2.1 将移植好的nginx安装包拷贝到板子上,然后解压到板子的根目录下。
2.2 修改/etc/nginx/nginx.conf配置文件,添加rtmp配置。如图2所示。

致远电子

图2

2.3 执行如下命令启动nginx服务器。

nginx -c /etc/nginx/nginx.conf

 2.4 在板子上执行如下推流命令,采集摄像头的实时视频流推送至板子上的nginx服务器上。

gst-launch-1.0 v4l2src device=/dev/video5 !

video/x-raw,format=YUY2,width=640,height=480,framerate=30/1 ! 

queue ! videoconvert ! mpph264enc !

video/x-h264,stream-format=byte-stream ! queue !

h264parse ! flvmux ! rtmpsink location=rtmp://192.168.1.136:1935/myapp/test

 

如果使用mp4视频文件做推流测试,可直接执行如下推流命令。

ffmpeg -re -i ./test.mp4 -c copy -f flv rtmp://192.168.1.136:1935/myapp/test

 2.5 此处板子上的IP地址配置为192.168.1.136,此时将PC电脑接在跟板子同一个局域网上,然后使用vlc播放器打开网络串流rtmp://192.168.1.136:1935/myapp/test即可预览视频流画面。  

原文标题:【技术分享】如何在嵌入式Linux平台上使用Nginx搭建RTMP流媒体服务器?

文章出处:【微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分