RK3576轻松搭建RTMP视频推流,基于FFmpeg+Nginx协同

瑞芯微RK3576芯片平台实现多路RTMP视频推流,基于触觉智能RK3576开发板Purple Pi OH2演示。

RTMP视频推流

  • RTMP视频推流简介

使用RTMP流媒体服务来实现视频推流,核心优势是低延迟+稳定推流。

推流端负责将视频数据通过RTMP流媒体协议传输给RTMP流媒体服务器;

拉流端从流媒体服务器中通过RTMP协议获取到视频数据;

流媒体服务器负责接收推流端的视频数据、当有客户端(拉流端)想要获取视频数据时,再将其发给相对应的客户端。

实现RTMP视频推流,需要三部分:推流端、流媒体服务器以及拉流端。本次演示使用RK3576作为推流端,使用FFmpeg工具进行推流,流媒体服务器则使用Nginx来搭建,而拉流端使用PC端的VLC播放器来实现。

  • 应用场景

触觉智能RK3576开发板采用核心板+底板设计,支持二次开发底板。其高性能AIoT核心板,凭借其8核CPU+4K编解码+16M ISP的强大性能,可轻松实现RTMP视频推流,可应用于以下领域:工业监控&远程运维、医疗实时会诊、安防监控、车载实时监控直播。

演示设备为触觉智能RK3576开发板Purple Pi OH2,系统固件为Ubuntu22.04。

Nginx流媒体配置

  • 前期准备

需在RK3576开发板搭建Nginx流媒体服务器,同时推流端也是开发板上,需烧录网盘提供Ubuntu固件,详细数据可关注触觉智能CSDN留言获取。

  • 安装Nginx

安装命令:

复制代码
sudo apt update
sudo apt install nginx

执行命令验证Nginx是否安装成功:

复制代码
 nginx -V

执行以下命令安装Nginx的rtmp模块并重启Nginx服务:

复制代码
sudo apt-get install libnginx-mod-rtmp
sudo service nginx restart

实打开电脑Windows自带的浏览器,输入开发板的IP地址按下回车,显示如下表示Nginx服务器已经正常工作

  • 配置Nginx支持RTMP

打开/etc/nginx/nginx.conf配置文件添加以下内容:

复制代码
rtmp {
        server {
            listen 1935;  #监听端口
            chunk_size 4096;  #上传 flv 文件块大小
            application live {
            live on;  #开启 live
            hls on;	  #开启 hls
            hls_path /tmp/hls; #rtmp推流请求路径,文件存放路径
            hls_fragment 5s; #每个 TS 文件包括 5s 的视频内容
                }
        }
}

修改完配置文件后重启Nginx服务:​​​​​​​

复制代码
sudo service nginx restart
sudo systemctl status nginx.service  
#查看Nginx服务是否处于运行状态

FFmpeg推流

  • 推送本地视频

触觉智能RK3576配套Ubuntu系统,已安装FFmpeg工具。

使用 FFmpeg进行推流,需要将视频流数据通过RTMP推流给Nginx流媒体服务器,再执行命令将本地视频流通过 RTMP 推给流媒体服务器。

复制代码
ffmpeg -stream_loop -1 -re -i /home/industio/avatar_h264_5s.mp4 -c copy -f flv -flvflags no_duration_filesize  rtmp://192.168.0.74:1935/live/test

FFmpeg成功推流后,可以使用Windows主机作为拉流端,使用 VLC 软件进行拉流。输入流媒体服务器的 IP(开发板的IP)以及路径,点击<播放>即可从RTMP流媒体服务器拉取视频数据进行播放,如下所示:

推流效果如图:

  • 推送摄像头视频

使用USB摄像头输入,视频节点为/dev/video36,查看USB摄像头分辨率信息:

复制代码
v4l2-ctl -d /dev/video36 --list-formats-ext

视频分辨率为:1024×576

复制代码
ffmpeg -f v4l2 -video_size 1024x576 -framerate 30 -i /dev/video36 -q 10 -f flv rtmp://192.168.0.74:1935/live/test

说明:

(1) 由于FFmpeg内部对视频进行了很多处理,譬如对视频、算法的处理以及网络传输等,导致会耗费相当大的时间, 且作为Demo还有优化的空间,实测画面会有3秒左右的延时。

(2)由于FFmpeg的v4l2输入模块仅支持标准V4L2视频捕获设备不兼容MIPI摄像头,因此无法使用MIPI摄像头进行推流。

相关推荐
阿拉斯攀登1 天前
【RK3576 安卓 JNI/NDK 系列 10】综合实战:RK3576 智能环境监测系统全实现 + 系列总结
rk3568·瑞芯微·rk安卓驱动·ndk构建系统·嵌入式智能终端
Maverick061 天前
02-SQL执行计划与优化器:Oracle是怎么决定“该怎么查“的
数据库·sql·oracle·ffmpeg
EasyDSS1 天前
RTMP高清推流直播/智能转码/无人机直播EasyDSS破局旅游慢直播痛点
ffmpeg·旅游·视频转码·fmp4·点播技术
EasyDSS1 天前
RTMP高清推流直播/视频转码EasyDSS在无人机RTMP直播场景中的应用技术解析
ffmpeg·音视频·无人机·视频转码·语音转写·点播技术
qq_172805591 天前
腾讯云WordPress遭遇Nginx 502问题排查与解决方案
nginx·腾讯云
李长渊哦1 天前
Nginx 反向代理实战:解决 IPv6 报错与跨网段访问指南
运维·nginx
小二·1 天前
HTTPS全链路解析:从证书申请到Nginx配置(含国密SM2实战)|网络安全
nginx·web安全·https
阿拉斯攀登1 天前
【RK3576 安卓 JNI/NDK 系列 09】RK3576 实战(三):JNI 调用 librga 实现 2D 硬件加速图像处理
android·驱动开发·rk3568·瑞芯微·rk安卓驱动·rk3576 rga加速
呼呼~²⁰¹⁷1 天前
调试LiveKit报错RoomClosed问题
实时音视频
私人珍藏库1 天前
[Windows] FFmpeg 图形化:EasyFF v0.17
ffmpeg·媒体·工具·软件·win·多功能