做视频监控、小型直播,RTMP推流是低延迟、易上手的实用方案。今天就以RK3568芯片设备为核心,带大家从0到1实现“推流→服务器转发→拉流观看”全流程,实操性拉满,看完就能动手!

先理清3个核心组件,原理不复杂
不用深钻技术细节,先明确关键工具的作用,流程就通了:
•RTMP协议:实时传输音视频的“通信语言”,默认使用1935端口,负责推流端与服务器、服务器与拉流端的数据传递;
•Nginx服务器:音视频“中转站”,接收推流端数据,再转发给拉流设备(如电脑);
•FFmpeg工具:推流“动力源”,能读取本地视频或摄像头数据,封装成RTMP格式后传给Nginx。
省心的是,RK3568芯片设备的系统已预装Nginx,且设备启动后会自动开启服务,省去手动搭建服务器的麻烦。
实战准备:这些东西要备齐
1.搭载RK3568芯片的设备(已刷入系统),相关软件没有的话需要安装;
2.USB摄像头(注意:FFmpeg暂不支持MIPI摄像头,实测验证过该兼容性问题);
3.电脑(需安装VLC播放器,用于拉流观看,可从设备配套资料的“软件目录”中获取安装包);
4.网络环境:RK3568设备与电脑需连接同一局域网(如同一路由器)。
Step by Step实操:跟着做就能成
3.1第一步:确认Nginx服务器正常运行
虽然系统会自动启动Nginx,但先验证状态更稳妥:
1.给RK3568设备通电,进入Linux系统并打开终端;
2.输入命令nginx -V,若能显示Nginx版本(如1.12.2)及交叉编译器信息(如10.3.0),说明Nginx已成功安装;
3.输入ps -aux | grep nginx,若能看到“nginx: master process”“nginx: worker process”等进程,证明Nginx正在运行;
4.查看设备IP:输入ifconfig,在“eth0”或“eth1”字段下找到“inet addr”(如示例中的192.168.1.33);
5.电脑打开浏览器,输入设备IP(如192.168.1.33),若显示“Welcome to nginx!”页面,说明服务器已就绪。
3.2第二步:配置Nginx支持RTMP推流
默认Nginx未开启RTMP功能,需修改配置文件:
1.终端输入命令vi /etc/nginx/nginx.conf,打开配置文件;
2.在文件末尾添加以下RTMP配置(直接复制,注意格式正确):
server{listen1935; # 监听RTMP默认端口,若被占用可修改chunk_size4096; # 视频块大小,4096字节适配多数场景applicationlive { # 推流应用名,后续推流地址会用到liveon; # 开启实时推流模式hlson; # 可选,开启HLS以兼容更多设备hls_path/tmp/hls; # 视频切片存放路径hls_fragment5s; # 每个切片含5秒视频,降低延迟}}}
1.保存退出:按ESC后输入:wq回车;
2.重启RK3568设备(或输入nginx -s reload重启Nginx),让配置生效。
3.3第三步:用FFmpeg推流,两种场景实测
FFmpeg已预装在RK3568设备系统中,可直接用于推流,推荐测试两种常用场景:
场景1:推本地视频文件(验证流程)
若想快速确认推流链路是否通,用设备内的本地视频测试最方便:
1.终端输入推流命令(路径需对应设备内实际视频位置,示例路径参考):
ffmpeg-re-i/userdata/apps/src/media/movies/mytest_1080p.mp4-c:avcopy-f flv rtmp://127.0.0.1/live/mytest
•关键参数解读:
◦-re:按视频实际播放速率推流,避免数据发送过快;
◦-i:指定输入文件(本地视频路径);
◦-c:av copy:直接复制音视频编码,不重新编码,节省设备性能;
◦-f flv:输出格式设为FLV(RTMP协议常用格式);
◦rtmp://127.0.0.1/live/mytest:推流地址(127.0.0.1指设备本机,“live”对应Nginx配置的应用名,“mytest”为自定义流名)。
1.若终端显示“frame=xxx fps=xx”等实时信息,说明推流成功。
场景2:推USB摄像头实时画面(视频监控)
这是更实用的监控场景,用USB摄像头采集实时画面推流:
1.将USB摄像头插入RK3568设备的USB接口;
2.终端输入推流命令(注意摄像头设备节点可能不同,示例为/dev/video9):
ffmpeg-f v4l2 -video_size640x480 -framerate30-i /dev/video9 -q10-f flv rtmp://127.0.0.1/live/mytest
•关键参数解读:
◦-f v4l2:指定视频设备格式(Linux系统下USB摄像头通用格式);
◦-video_size 640x480:设置画面分辨率(可根据需求调整为1280x720等);
◦-framerate 30:帧率设为30帧/秒,保证画面流畅;
◦-i /dev/video9:摄像头设备节点(不确定时,输入ls /dev/video*查看所有可用节点);
◦-q 10:画质参数(数值越小画质越好,10为兼顾画质与性能的选择)。
1.终端有实时帧率输出,证明摄像头正实时推流。
3.4第四步:用VLC拉流,查看效果
推流成功后,用电脑上的VLC播放器拉流,即可看到视频或摄像头画面:
1.打开VLC播放器,点击顶部「媒体」→「打开网络串流」;
2.在「网络URL」栏输入:rtmp://设备IP/live/mytest(如示例中的rtmp://192.168.1.33/live/mytest);
3.点击「播放」,稍等片刻即可显示画面——本地视频会正常播放,USB摄像头则呈现实时监控画面。
小贴士:若出现卡顿或5-6秒延迟,属于正常现象,多因FFmpeg音视频处理、网络波动导致,后续可通过优化码率、帧率或编解码算法改善。
常见问题解决:踩坑不用慌
1.Nginx配置后推流失败?
检查配置文件是否保存,且已重启Nginx或设备;用netstat -tuln | grep 1935确认1935端口未被占用。
2.USB摄像头识别不到?
输入ls /dev/video*查看实际设备节点,将命令中的/dev/video9替换为实际节点(如/dev/video0)。
3.延迟过高?
尝试降低分辨率(如640x480改为320x240)、降低帧率(30帧→20帧),或在FFmpeg命令中添加-preset ultrafast(快速编码,以轻微画质损耗换低延迟)。
总结
本次用RK3568芯片设备,完整走通了“Nginx配置→FFmpeg推流→VLC拉流”的RTMP推流流程,无论是小型监控还是简单直播,都能满足基础需求。动手试试吧!实战是掌握技术的最快方式,有问题欢迎在评论区交流~
-
服务器
+关注
关注
14文章
10344浏览量
91737 -
rtmp
+关注
关注
0文章
10浏览量
1798 -
RK3568
+关注
关注
5文章
654浏览量
8098
发布评论请先 登录
RK3568开发笔记(一)
ROC RK3568 PC源代码RK3568/RK3588 RKNN SDK
rk3568和rk3399的区别
RK3568与3568J的区别
rk3568有多少引脚?
rk3568是什么架构的?
米尔RK3568加推工控板和工控机,更丰富的场景应用
【迅为工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解
实战|用RK3568芯片搞RTMP推流,监控/直播一步到位!
评论