樹莓派采用MJPG-Streamer雙攝推流至上位機,實測延時低至200ms[CSI攝像頭+USB攝像頭]
- 總體流程
-
- 1.硬體連接配接與軟體及驅動配置
-
- 1)檢測是否存在USB攝像頭裝置
- 2)安裝 MJPG-Streamer from github
- 3)啟動MJPG-Streamer
- 4)開啟指定攝像頭
- 2.上位機PC端的接收視訊流
- 3.雙攝延遲效果測試
注:僅用于學習分享,分享自己在樹莓派攝像頭調試中的一些經驗。本文将介紹采用 MJPG-Streamer 的方式傳輸視訊流
用到的工具材料:
- 樹莓派3B+
- 網線
- 電腦
- CSI攝像頭
- USB攝像頭
實作的功能有:
①樹莓派通過網線将CSI攝像頭與USB攝像頭的實時畫面推流至上位機電腦中的顯示
②實測雙攝延時低至200ms以下
我的另一篇博文中介紹了使用樹莓派H.264硬體編解碼推流CSI攝像頭,是以本文僅闡釋如何用 MJPG-Streamer推流USB攝像頭實時畫面即可。是以需要同時推流雙攝時,隻需要按照這兩篇博文的流程都走一遍即可。
總體流程
1.樹莓派硬體連接配接與軟體及驅動安裝
2.上位機PC端的接收視訊流
3.延遲效果測試
1.硬體連接配接與軟體及驅動配置
1)檢測是否存在USB攝像頭裝置
輸入以下指令:
[email protected]:~ $ lsusb
未插入USB攝像頭
[email protected]:~ $ lsusb
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
插入USB攝像頭
[email protected]:~ $ lsusb
Bus 001 Device 004: ID 05a3:9230 ARC International
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[email protected]:~ $ v4l2-ctl --list-formats
[email protected]:~ $ v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : Motion-JPEG
Index : 1
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
圖1 還未插入USB攝像頭 | 圖2 插入USB攝像頭 |
2)安裝 MJPG-Streamer from github
按照以下指令安裝MJPG-Streamer及其相關配置 每一行為一個指令
sudo apt-get install cmake libjpeg8-dev
wget https://github.com/jacksonliam/mjpg-streamer/archive/master.zip
unzip master.zip
cd mjp*g-*
cd mjpg-*
make
sudo make install
cd $home
流程如下
3)啟動MJPG-Streamer
啟動如下指令:
TCP端口8085被指定為輸出端口,以確定沒有對其他任何東西的幹擾。
,
如上圖所示,推流已經完成,分辨率為720P(1280X720),端口号為8085,到此樹莓派的任務已經完成
[email protected]:~ $ /usr/local/bin/mjpg_streamer -i "/usr/local/lib/mjpg-streamer/input_uvc.so -n -f 10 -r 1280x720" -o "/usr/local/lib/mjpg-streamer/output_http.so -p 8085 -w /usr/local/share/mjpg-streamer/www"
MJPG Streamer Version.: 2.0
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 1280 x 720
i: Frames Per Second.: 10
i: Format............: JPEG
i: TV-Norm...........: DEFAULT
i: FPS coerced ......: from 10 to 60
o: www-folder-path......: /usr/local/share/mjpg-streamer/www/
o: HTTP TCP port........: 8085
o: HTTP Listen Address..: (null)
o: username:password....: disabled
o: commands.............: enabled
4)開啟指定攝像頭
- USB裝置存在兩個攝像頭
- 如果你有多個攝像頭,也可以開啟多個攝像頭
- -d /dev/video1 參數标明需要開啟的攝像頭
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/mjpg-streamer/input_uvc.so -d /dev/video1 -n -f 10 -r 1280x720" -o "/usr/local/lib/mjpg-streamer/output_http.so -p 8085 -w /usr/local/share/mjpg-streamer/www"
2.上位機PC端的接收視訊流
采用web網頁接收視訊流
打開浏覽器輸入:
http://樹莓派ip位址:開啟的端口号
// A case in point 例如:
http://192.168.2.150:8085
輸入 http://192.168.2.150:8085 打開後如下圖:為MJPG Streamer 首頁
檢視視訊點選Stream
看到網頁中有樹莓派USB攝像頭拍攝的畫面,證明視訊推流成功。
3.雙攝延遲效果測試
我們打開一個線上秒表,讓其開始計時,而後我們用樹莓派CSI攝像頭及USB攝像頭去拍攝電腦螢幕,然後截屏,計算拍攝的時間與秒表實際時間的內插補點,可以粗略測得延時的結果
"如上圖所示" 線上秒表為1.18.697
USB攝像頭(Web MJPG-Streamer)推流視訊中的線上秒表為1.18.567
CSI攝像頭(MPlayer 視訊播放器)推流視訊中的線上秒表為1.18.525
其內插補點△t1=0.130s=130ms △t1=0.172s=172ms
之後我通過多次測試多種組合得到如下圖資料(僅做參考):
總結:
分辨率都為 720P 延遲大緻為100-200ms之間[帶光纖延遲增加并不明顯]
分辨率都為 1080P 延遲為200-300ms
疑問或交流請留言 _
author: Dwfish 淹死的魚 2018.12.2