在上一篇文章,我們安裝了Raspberry Pi的Camera相機模組,也實際測試了可以完成拍照以及錄影的操作,下一步就是利用這個模組來建立一個可以傳送即時視訊的網站。可以建立視訊的方法有許多種,在這一篇文章中,我們使用的是mjpg_streamer這一個開源專案。首先,在硬體的部份,我們利用之前裝好的PiBow的Case,讓樹莓派可以站起來:

2016-04-07 16.22.51

然後對準我們想要拍即時視訊的方位:

2016-04-07 16.24.06

製作完成之後,瀏覽網頁的樣子:

2016-04-07_16-24-06

其中選單的「Static」傳回的是靜態影像,而「Stream」傳回的是即時的動態影像。要建立即時影像串流網站,主要分成兩個部份,第一個部份為設定相機,使其定時輸出影像pic.jpg,放在/tmp/stream中,然後透過mjpg_streamer把這個影像持續地放在網站上。也因為是用兩個步驟完成,所以在影像的流暢度來說並不是很好,只能用來當做是監看遠端畫面之用。此內容主要是參考以下的這支影片:

從影片的6:00處開始看即可,主要是先安裝所需要的程式庫,然後把標頭檔建立正確的連結:

$ sudo apt-get -y update
$ sudo apt-get install subversion
$ sudo apt-get install libjpeg8-dev imagemagick libv4l-dev
$ ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h

然後到svn上去複製一份mjpg-streamer的原始檔案下來,重新編譯之後進行make install安裝:

$ svn co https://svn.code.sf.net/p/mjpg-streamer/code/
$ cd code/mjpg-streamer
$ make 
$ sudo make install

安裝完畢之後,把程式檔案和程式庫複製到正確的位置去,並建立一個臨時的輸出影像用的目錄/tmp/stream,因為/tmp下的內容每次重新開機之後會被刪除,所以每次在執行時,要再重新建立:

$ cd code/mjpg-streamer
$ sudo cp mjpg_streamer /usr/local/bin
$ sudo cp output_http.so input_file.so /usr/local/lib
$ sudo cp -R www /usr/local/www
$ mkdir /tmp/stream

然後,使用rapsistill持續不斷地透過相機模組取得相片,放在/tmp/stream中,並命名為pic.jpg,如下(100前面的參數是TL的小寫):

$ raspistill --nopreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 2147483647 -th 0:0:0 &

此時就會產生不間斷的訊息:

2016-04-07_16-26-04

這時後再開啟另外一個終端機,然後輸入以下指令啟用mjpg-streamer服務:

$ export LD_LIBRARY_PATH=/usr/local/lib
$ mjpg_streamer -i "input_file.so -f /tmp/stream -n pic.jpg" -o "output_http.so -w /usr/local/www"

mjpg_streamer會把服務開啟在8080連接埠,所以看你的raspberry的 IP在哪裡(例如:192.168.1.106),就可以開啟瀏覽器http://192.168.1.106:8080進入監看網頁囉。由於開啟此串流程式需要2個終端機畫面,所以我都是以Putty的SSH進入之後,開啟VNC,再透過VNCViewer進入X視窗做設定。

此種方式設定簡單,不過畫面會有非常大的lag(大約1~2fps),只適合監看,並不適合用來看影片。下一篇我們再來介紹其它方法。

(3292)