2014年12月7日 星期日

[Raspberry-Pi] 相機模組 x Live555MediaServer




想找到可以遠端觀看Pi-Camera Live-Stream的方法,而且要有一定的即時性,只是嘗試過幾招都不是很理想:


  • Motion 

偵測到背景改變後才開始錄影,就監視攝影機來說是省去錄影空間的好解法,但也因此CPU運算個沒停,即時影像輸出是很不流暢的。

參考1:http://www.instructables.com/id/Raspberry-Pi-as-low-cost-HD-surveillance-camera/?ALLSTEPS

參考2:http://www.instructables.com/id/Raspberry-Pi-Completely-Wireless-IP-Camera-Solar/


  • MJPG-Streamer(live streamer only)
只做影像的live-streaming,跑起來也比motion順暢多,但採用的是HTTP Live Stream協定,強調資料傳送的準確性,而非時間性,實際運作也稱不上流暢

參考1:http://blog.miguelgrinberg.com/post/stream-video-from-the-raspberry-pi-camera-to-web-browsers-even-on-ios-and-android
參考2:https://dotblogs.com.tw/bowwowxx/2015/06/08/151511
參考3:解決/dev/video0 does not support streaming i/o
參考4:照此官方步驟安裝uv4l(驅動Raspberry原廠相機至/dev/video0)
20150526備註:
消掉UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device的作法
$mjpg_streamer -i "input_uvc.so -n" -o "output_http.so -w ./www" //input_uvc.so引數加上-n

最後因緣際會瞭解了RTSP(Real Time Streaming Protocol),是種強調即時傳送串流的協定,看了維基百科的介紹,想像起來可能是偏向時間性的傳送協定,所以目標就暫時聚焦在找到實現RTSP的服務啦!

很幸運的Linux上有Live555這個開源軟體,可以讓我們架起簡單的Media Server
官方參考:Live555 Media Server

簡單作法如下:




#wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz   //下載Live555原始碼
#tar -zxvf live555-latest.tar.gz  //解壓縮
#cd live //至live 資料夾
#./genMakefiles linux //按linux架構產生Make檔案
註1:live資料夾下有許多開頭為config.xxxx的檔案,即為對應的genMakefiles組態檔案。
註2:以"linux"架構編譯的執行檔是可以在Pi上運作的,其他架構的還沒試過。

#make //編譯Live555
#make install //佈署編譯後的Live555
註:在Pi上部屬後的Live555執行檔們會被複製到 /usr/local/bin下


  • Step2-啟動Live555MediaServer


#cd /usr/local/bin                // 進到Live555的佈署資料夾
#./live555MediaServer &   // 啟動live555MediaServer,會秀出簡單的說明

此時live555MediaServer就被啟動了並開始連入需求的監聽,播放來源檔案路徑是相對於live5執行檔位置開始計算,也就是說,想要被播放的檔案必須與live555MediaServer執行檔放在一起,或是在其位置下的子資料夾


  • Step3-啟動Pi-Camera

(在此之前要先設定好Pi-Camera唷,可以參考http://www.raspberrypi.org/learning/python-picamera-setup/

#touch rpi.264         // 開一空檔案準備給Pi-Camera作緩衝
註:live555以副檔名辨認播放格式,此處以h264來錄影與播放
 #raspivid -t 999999 -h 180 -w 270 -o rpi.264 //啟動Pi-Camara,並將串流存在rpi.264檔案裡

好的,做到這邊就完成RTSP Server側的簡單設定了,接著要到Client側開串流來看看。


  • Step4-使用VLC觀看線上串流(On Windows)


在VLC下的檔案->開啟網路串流
網址輸入:
rtsp://hostname:8554/rpi.264(因為Step3的串流是輸出到與live555Server同層的檔案裡)

就可以看見流暢的影像啦!
只是…怎麼Time-shifting這麼多哩…覺得是影像在Pi上緩衝太多的關係
這點解決的話就完美了!
To Be Continued....


其他參考:
網路後端的工作筆記
大隻熊的部落格
Python-Camera      // 用Python來控制嚕,進階使用

沒有留言:

張貼留言