做視頻監(jiān)控、小型直播,RTMP推流是低延遲、易上手的實用方案。今天就以RK3568芯片設(shè)備為核心,帶大家從0到1實現(xiàn)“推流→服務(wù)器轉(zhuǎn)發(fā)→拉流觀看”全流程,實操性拉滿,看完就能動手!

先理清3個核心組件,原理不復(fù)雜
不用深鉆技術(shù)細節(jié),先明確關(guān)鍵工具的作用,流程就通了:
?RTMP協(xié)議:實時傳輸音視頻的“通信語言”,默認使用1935端口,負責推流端與服務(wù)器、服務(wù)器與拉流端的數(shù)據(jù)傳遞;
?Nginx服務(wù)器:音視頻“中轉(zhuǎn)站”,接收推流端數(shù)據(jù),再轉(zhuǎn)發(fā)給拉流設(shè)備(如電腦);
?FFmpeg工具:推流“動力源”,能讀取本地視頻或攝像頭數(shù)據(jù),封裝成RTMP格式后傳給Nginx。
省心的是,RK3568芯片設(shè)備的系統(tǒng)已預(yù)裝Nginx,且設(shè)備啟動后會自動開啟服務(wù),省去手動搭建服務(wù)器的麻煩。
實戰(zhàn)準備:這些東西要備齊
1.搭載RK3568芯片的設(shè)備(已刷入系統(tǒng)),相關(guān)軟件沒有的話需要安裝;
2.USB攝像頭(注意:FFmpeg暫不支持MIPI攝像頭,實測驗證過該兼容性問題);
3.電腦(需安裝VLC播放器,用于拉流觀看,可從設(shè)備配套資料的“軟件目錄”中獲取安裝包);
4.網(wǎng)絡(luò)環(huán)境:RK3568設(shè)備與電腦需連接同一局域網(wǎng)(如同一路由器)。
Step by Step實操:跟著做就能成
3.1第一步:確認Nginx服務(wù)器正常運行
雖然系統(tǒng)會自動啟動Nginx,但先驗證狀態(tài)更穩(wěn)妥:
1.給RK3568設(shè)備通電,進入Linux系統(tǒng)并打開終端;
2.輸入命令nginx -V,若能顯示Nginx版本(如1.12.2)及交叉編譯器信息(如10.3.0),說明Nginx已成功安裝;
3.輸入ps -aux | grep nginx,若能看到“nginx: master process”“nginx: worker process”等進程,證明Nginx正在運行;
4.查看設(shè)備IP:輸入ifconfig,在“eth0”或“eth1”字段下找到“inet addr”(如示例中的192.168.1.33);
5.電腦打開瀏覽器,輸入設(shè)備IP(如192.168.1.33),若顯示“Welcome to nginx!”頁面,說明服務(wù)器已就緒。
3.2第二步:配置Nginx支持RTMP推流
默認Nginx未開啟RTMP功能,需修改配置文件:
1.終端輸入命令vi /etc/nginx/nginx.conf,打開配置文件;
2.在文件末尾添加以下RTMP配置(直接復(fù)制,注意格式正確):
server{listen1935; # 監(jiān)聽RTMP默認端口,若被占用可修改chunk_size4096; # 視頻塊大小,4096字節(jié)適配多數(shù)場景applicationlive { # 推流應(yīng)用名,后續(xù)推流地址會用到liveon; # 開啟實時推流模式hlson; # 可選,開啟HLS以兼容更多設(shè)備hls_path/tmp/hls; # 視頻切片存放路徑hls_fragment5s; # 每個切片含5秒視頻,降低延遲}}}
1.保存退出:按ESC后輸入:wq回車;
2.重啟RK3568設(shè)備(或輸入nginx -s reload重啟Nginx),讓配置生效。
3.3第三步:用FFmpeg推流,兩種場景實測
FFmpeg已預(yù)裝在RK3568設(shè)備系統(tǒng)中,可直接用于推流,推薦測試兩種常用場景:
場景1:推本地視頻文件(驗證流程)
若想快速確認推流鏈路是否通,用設(shè)備內(nèi)的本地視頻測試最方便:
1.終端輸入推流命令(路徑需對應(yīng)設(shè)備內(nèi)實際視頻位置,示例路徑參考):
ffmpeg-re-i/userdata/apps/src/media/movies/mytest_1080p.mp4-c:avcopy-f flv rtmp://127.0.0.1/live/mytest
?關(guān)鍵參數(shù)解讀:
?-re:按視頻實際播放速率推流,避免數(shù)據(jù)發(fā)送過快;
?-i:指定輸入文件(本地視頻路徑);
?-c:av copy:直接復(fù)制音視頻編碼,不重新編碼,節(jié)省設(shè)備性能;
?-f flv:輸出格式設(shè)為FLV(RTMP協(xié)議常用格式);
?rtmp://127.0.0.1/live/mytest:推流地址(127.0.0.1指設(shè)備本機,“l(fā)ive”對應(yīng)Nginx配置的應(yīng)用名,“mytest”為自定義流名)。
1.若終端顯示“frame=xxx fps=xx”等實時信息,說明推流成功。
場景2:推USB攝像頭實時畫面(視頻監(jiān)控)
這是更實用的監(jiān)控場景,用USB攝像頭采集實時畫面推流:
1.將USB攝像頭插入RK3568設(shè)備的USB接口;
2.終端輸入推流命令(注意攝像頭設(shè)備節(jié)點可能不同,示例為/dev/video9):
ffmpeg-f v4l2 -video_size640x480 -framerate30-i /dev/video9 -q10-f flv rtmp://127.0.0.1/live/mytest
?關(guān)鍵參數(shù)解讀:
?-f v4l2:指定視頻設(shè)備格式(Linux系統(tǒng)下USB攝像頭通用格式);
?-video_size 640x480:設(shè)置畫面分辨率(可根據(jù)需求調(diào)整為1280x720等);
?-framerate 30:幀率設(shè)為30幀/秒,保證畫面流暢;
?-i /dev/video9:攝像頭設(shè)備節(jié)點(不確定時,輸入ls /dev/video*查看所有可用節(jié)點);
?-q 10:畫質(zhì)參數(shù)(數(shù)值越小畫質(zhì)越好,10為兼顧畫質(zhì)與性能的選擇)。
1.終端有實時幀率輸出,證明攝像頭正實時推流。
3.4第四步:用VLC拉流,查看效果
推流成功后,用電腦上的VLC播放器拉流,即可看到視頻或攝像頭畫面:
1.打開VLC播放器,點擊頂部「媒體」→「打開網(wǎng)絡(luò)串流」;
2.在「網(wǎng)絡(luò)URL」欄輸入:rtmp://設(shè)備IP/live/mytest(如示例中的rtmp://192.168.1.33/live/mytest);
3.點擊「播放」,稍等片刻即可顯示畫面——本地視頻會正常播放,USB攝像頭則呈現(xiàn)實時監(jiān)控畫面。
小貼士:若出現(xiàn)卡頓或5-6秒延遲,屬于正常現(xiàn)象,多因FFmpeg音視頻處理、網(wǎng)絡(luò)波動導致,后續(xù)可通過優(yōu)化碼率、幀率或編解碼算法改善。
常見問題解決:踩坑不用慌
1.Nginx配置后推流失敗?
檢查配置文件是否保存,且已重啟Nginx或設(shè)備;用netstat -tuln | grep 1935確認1935端口未被占用。
2.USB攝像頭識別不到?
輸入ls /dev/video*查看實際設(shè)備節(jié)點,將命令中的/dev/video9替換為實際節(jié)點(如/dev/video0)。
3.延遲過高?
嘗試降低分辨率(如640x480改為320x240)、降低幀率(30幀→20幀),或在FFmpeg命令中添加-preset ultrafast(快速編碼,以輕微畫質(zhì)損耗換低延遲)。
總結(jié)
本次用RK3568芯片設(shè)備,完整走通了“Nginx配置→FFmpeg推流→VLC拉流”的RTMP推流流程,無論是小型監(jiān)控還是簡單直播,都能滿足基礎(chǔ)需求。動手試試吧!實戰(zhàn)是掌握技術(shù)的最快方式,有問題歡迎在評論區(qū)交流~
-
服務(wù)器
+關(guān)注
關(guān)注
14文章
10324瀏覽量
91659 -
rtmp
+關(guān)注
關(guān)注
0文章
10瀏覽量
1795 -
RK3568
+關(guān)注
關(guān)注
5文章
650瀏覽量
8074
發(fā)布評論請先 登錄
ROC RK3568 PC源代碼RK3568/RK3588 RKNN SDK
rk3568和rk3399的區(qū)別
RK3568與3568J的區(qū)別
rk3568有多少引腳?
rk3568是什么架構(gòu)的?
米爾RK3568加推工控板和工控機,更豐富的場景應(yīng)用
【RK3568 NPU實戰(zhàn)】別再閑置你的NPU!手把手帶你用迅為資料跑通Android AI檢測Demo,附完整流程與效果
【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開發(fā)板Linux驅(qū)動開發(fā)實戰(zhàn):RK3568內(nèi)核模塊符號導出詳解
實戰(zhàn)|用RK3568芯片搞RTMP推流,監(jiān)控/直播一步到位!
評論