天天看點

【樹莓派】樹莓派采用MJPG-Streamer雙攝推流至上位機,實測延時低至200ms[CSI攝像頭+USB攝像頭]總體流程

樹莓派采用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

           
【樹莓派】樹莓派采用MJPG-Streamer雙攝推流至上位機,實測延時低至200ms[CSI攝像頭+USB攝像頭]總體流程
圖1 還未插入USB攝像頭
【樹莓派】樹莓派采用MJPG-Streamer雙攝推流至上位機,實測延時低至200ms[CSI攝像頭+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
           

流程如下

【樹莓派】樹莓派采用MJPG-Streamer雙攝推流至上位機,實測延時低至200ms[CSI攝像頭+USB攝像頭]總體流程

3)啟動MJPG-Streamer

啟動如下指令:

TCP端口8085被指定為輸出端口,以確定沒有對其他任何東西的幹擾。

【樹莓派】樹莓派采用MJPG-Streamer雙攝推流至上位機,實測延時低至200ms[CSI攝像頭+USB攝像頭]總體流程

,

如上圖所示,推流已經完成,分辨率為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裝置存在兩個攝像頭
    【樹莓派】樹莓派采用MJPG-Streamer雙攝推流至上位機,實測延時低至200ms[CSI攝像頭+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 首頁

【樹莓派】樹莓派采用MJPG-Streamer雙攝推流至上位機,實測延時低至200ms[CSI攝像頭+USB攝像頭]總體流程

檢視視訊點選Stream

【樹莓派】樹莓派采用MJPG-Streamer雙攝推流至上位機,實測延時低至200ms[CSI攝像頭+USB攝像頭]總體流程

看到網頁中有樹莓派USB攝像頭拍攝的畫面,證明視訊推流成功。

3.雙攝延遲效果測試

我們打開一個線上秒表,讓其開始計時,而後我們用樹莓派CSI攝像頭及USB攝像頭去拍攝電腦螢幕,然後截屏,計算拍攝的時間與秒表實際時間的內插補點,可以粗略測得延時的結果

【樹莓派】樹莓派采用MJPG-Streamer雙攝推流至上位機,實測延時低至200ms[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
           

之後我通過多次測試多種組合得到如下圖資料(僅做參考):

【樹莓派】樹莓派采用MJPG-Streamer雙攝推流至上位機,實測延時低至200ms[CSI攝像頭+USB攝像頭]總體流程

總結:

分辨率都為 720P  延遲大緻為100-200ms之間[帶光纖延遲增加并不明顯]
   分辨率都為 1080P 延遲為200-300ms
           

疑問或交流請留言 _

author: Dwfish 淹死的魚 2018.12.2
【樹莓派】樹莓派采用MJPG-Streamer雙攝推流至上位機,實測延時低至200ms[CSI攝像頭+USB攝像頭]總體流程