天天看點

openwrt 在RT5350上實作mjpg-streamer視訊流輸出(攝像頭格式為YUYV格式)

今天按照入門教材實作mjpg-streamer的實驗,出現了很多問題,特此記錄。

配置核心加入攝像頭驅動:

Kernel modules --->Video Support --->kmod-video-core

                                                               --->kmod-video-uvc

配置核心加入MJPEG視訊流

Multimedia   --->mjpg-streamer

重新編譯,燒寫鏡像:openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin

重新開機後既可以看到已經有mjpg-streamer的指令。

配置攝像頭的幀率/分辨率等:

配置資訊在目錄:etc/config/mjpg-streamer

config mjpg-streamer 'core'                                                     

        option enabled '1'                                                      

        option input 'uvc'                                                      

        option output 'http'                                                    

        option device '/dev/video0'                                             

        option resolution '320x240'                                             

        option fps '5'                                                          

        option www '/www/webcam'                                                

        option port '8080'

啟動mjpg-streamer: /etc/init.d/mjpg-streamer start

9.8 電腦或手機觀看視訊圖像

在浏覽器輸入以下位址,即可觀看圖像。本人在火狐和搜狗浏覽器測試都 OK。//問号是正常的,不要以為是亂碼

動态視訊:192.168.1.1:8080/?action=stream                

靜态圖像:192.168.1.1:8080/?action=snapshot

我在火狐上使用::192.168.1.1:8080/?action=stream                

出現錯誤:

The image cannot be displayed, because it contains errors

以為是火狐缺少插件,或者是其他什麼原因,最後網上找了一下,發現mjpg-streamer支援MJPEG和YUV格式,但是YUV需要軟編碼,是以使用YUV時需要增加參數" -y"

我使用的攝像頭是輸出YUYV格式的攝像頭,是以會出現此問題,手動啟動沒有加"-y"會出現很多

UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device

檢視了一下/etc/init.d/mjpg-streamer這個啟動腳本,發現确實沒有加-y參數,是以要麼修改/etc/init.d/mjpg-streamer這個腳本,增加-y,要麼自動手動運作指令:

mjpg_streamer -i "input_uvc.so -d /dev/video0 -n -y -r 320x240 -f 30" -o "output_http.so -p 8080"

mjpg_streamer -i "input_uvc.so -d /dev/video0 -n -y -r 640x480 -f 30" -o "output_http.so -p 8080

實際效果肯定沒有30fps,因為RT5350的CPU處理不過來,攝像頭輸出應該也沒那麼多,猜測而已。

mjpeg-streamer指令詳細介紹網上多的是,這裡就不介紹了。