您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“樹莓派如何實現直播”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“樹莓派如何實現直播”這篇文章吧。
1.通過USB攝像頭
2.通過CSI(樹莓派攝像頭)
今天我們實現通過CSI來實現直播功能,但是也介紹USB攝像頭實現直播的方案。
支持CSI(樹莓派官方攝像頭)
開源項目github:mjpg-streamer
效果圖
基礎知識:cmake和make區別
實現過程
1.下載mjpg-streamer
wget https://github.com/jacksonliam/mjpg-streamer/archive/master.zip
2.Building & Installation
sudo install cmake libjpeg8-dev
3.解壓master.zip
unzip master.zip
解壓后目錄
drwxr-xr-x 3 pi pi 4096 Apr 12 05:24 mjpg-streamer-master/
4.編譯及安裝mjpg_steamer
cmake 指向CMakeLists.txt所在的目錄,例如cmake .. 表示CMakeLists.txt在當前目錄的上一級目錄。cmake生成很多編譯的中間文件以及makefile文件,所以一般新建一個新的_build,專門用來編譯
cd mjpg-streamer-experimental mkdir _build cd _build cmake .. make sudo make install
make根據生成makefile文件,編譯程序
說明:
make就是make all,編譯用的--僅編譯,具體編譯了那些文件要看你的Makefile;
make install,編譯并安裝(比如安裝到/usr/bin目錄下,然后可以直接使用。因為/usr/bin只有管理員才能向里面添加文件,所以通常要加sudo)
5./etc/default/tmpfs:
# mount /tmp as a tmpfs. Defaults to no; set to yes to enable (/tmp
# will be part of the root filesystem if disabled). /tmp may also be
# configured to be a separate mount in /etc/fstab.
RAMTMP=yes
6.Reboot
7.raspistill -tl 500 -t 999999 -vf -w 960 -h 720 -o /tmp/mjpg/test.jpg -n -q 50&
8.mjpg_streamer -i 'input_file.so -f /tmp/mjpg -r'
9.啟動mjpg_streamer
pi@xxxxxx:~/mjpg-streamer-experimental$ mjpg_streamer MJPG Streamer Version.: 2.0 o: www-folder-path......: disabled o: HTTP TCP port........: 8080 o: HTTP Listen Address..: (null) o: username:password....: disabled o: commands.............: enabled bind: Address already in use
修改端口號:默認是8080端口,由于沒找到配置文件,也是很無奈!(這是我一開始理解的,把mjpg_stream當作一個簡單服務器了,實際上mjpg_stream是一款命令行程序,可通過mjpg_stream命令 - p操作修改端口號)
通過源碼修改端口號,重新編輯安裝
編輯器Visual Studio Code
/mjpg_streamer-experimental/output_http/output_http.c
int output_init(output_parameter *param, int id) { int i; int port; char *credentials, *www_folder, *hostname = NULL; char nocommands; DBG("output #%02d\n", param->id); port = htons(8099); credentials = NULL; www_folder = NULL; nocommands = 0; param->argv[0] = OUTPUT_PLUGIN_NAME; /* show all parameters for DBG purposes */ for(i = 0; i < param->argc; i++) { DBG("argv[%d]=%s\n", i, param->argv[i]); } }
10.http://<raspberrypi>:8099/
11.命令行啟動服務
cd到~/mjpg-streamer-master/mjpg-streamer-experimental
pi@xxxxxx:~/mjpg-streamer-master/mjpg-streamer-experimental$ mjpg_streamer -i "input_raspicam.so" -o "output_http.so -w ./www" MJPG Streamer Version.: 2.0 i: fps.............: 30 i: resolution........: 640 x 480 i: camera parameters..............: Sharpness 0, Contrast 0, Brightness 50 Saturation 0, ISO 0, Video Stabilisation No, Exposure compensation 0 Exposure Mode 'auto', AWB Mode 'auto', Image Effect 'none' Metering Mode 'average', Colour Effect Enabled No with U = 128, V = 128 Rotation 0, hflip No, vflip No ROI x 0.000000, y 0.000000, w 1.000000 h 1.000000 o: www-folder-path......: ./www/ o: HTTP TCP port........: 8099 o: HTTP Listen Address..: (null) o: username:password....: disabled o: commands.............: enabled i: Starting Camera Encoder Buffer Size 81920
啟動腳本方式
vi live.sh
腳本內容
cd ~/mjpg-streamer-master/mjpg-streamer-experimental mjpg_streamer -i "input_raspicam.so" -o "output_http.so -w ./www"
執行腳本
sh live.sh
12.視頻很卡頓的情況
原因在于mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c
static int fps = 5;//每秒5幀
修改為fps = 30;//每秒30幀
static int fps = 30; static int width = 640; static int height = 480; static int quality = 85; static int usestills = 0; static int wantPreview = 0; static int wantTimestamp = 0; static RASPICAM_CAMERA_PARAMETERS c_params;
13.重新編譯安裝
查看步驟4編譯及安裝mjpg_steamer
14.更加流暢
/etc/default/tmpfs:
# mount /tmp as a tmpfs. Defaults to no; set to yes to enable (/tmp
# will be part of the root filesystem if disabled). /tmp may also be
# configured to be a separate mount in /etc/fstab.
RAMTMP=yes
Reboot.
raspistill -tl 500 -t 999999 -vf -w 960 -h 720 -o /tmp/mjpg/test.jpg -n -q 50&
mjpg_streamer -i 'input_file.so -f /tmp/mjpg -r'
http://<raspberrypi>:8080/?action=stream
aptitude——詳細查看已安裝或可用的軟件包。
sudo aptitude
用樹莓派官方攝像頭做絲滑般流暢的監控!
支持CSI(樹莓派攝像頭)
網頁刷新照片方式,很low很low的方式,類似于播放幻燈片
["raspistill", "-t", "0.1/1/5", "-w", "300", "-h", "500" ]
說明:
紅色標注參數,只能是正整數,否則出現不可控,導致進程raspistill一直占用相機拍照。導致其它程序無法使用相機。
-t, --timeout : 拍照和關閉時的延時指定,未指定時默認是5s
支持USB攝像頭,不支持CSI(樹莓派官方攝像頭)
nginx-rtmp-module
情況一:已安裝Nginx,重新把rtmp-module編譯Nginx
參考文章:如何升級Nginx到最新穩定版
參考文章:已安裝nginx動態添加模塊
參考文章:nginx 1.9.5 ./configure: error: invalid option "–with-http_spdy_module"
情況二:直接把rtmp-module與Nginx編譯,安裝Nginx
遇到的問題:
install FFmpeg
sudo apt-get install ffmpeg
樹莓派操作系統沒有ffmpeg程序
解決方案<<樹莓派攝像頭實時監控>>該文章中的提示:
"你還需要 libav-tools,它是一個 ffmpeg 分支。數月之前,Debian用libav-tools取代了了ffmpeg"
以上是“樹莓派如何實現直播”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。