Android中實時視頻監控方案設計思路

最近手機安裝了一個「千里眼」和千里眼家居遠程監控的應用,對裏面的實時監控交通路口的狀態有點好奇。以是使用相應的方法反編譯看看她的原理。
對於軟件「千里眼」,通過代碼的翻看,發現採用的是VideoView中訪問RTSP實時視頻流的思路實現的。
反編譯後的代碼html

String str = getIntent().getStringExtra("rtsp");if (str != null){      VideoView localVideoView3 = this.videoView;      Uri localUri = Uri.parse(str);      localVideoView3.setVideoURI(localUri);}


軟件千里眼家居遠程監控採用的是另一種思路:
從反編譯代碼能夠看出linux

boolean bRunning = true;  Handler handler;  String htmlCode = " <embed style='width:100%; height:100%' src='http://www.3gjiaoshi.com:8080/FLVPlayer.swf?fullscreen=true&video=@VIDEO @'   autoplay='true'   quality='high' bgcolor='#000000'   name='VideoPlayer'  +  width='320' height='240'  allowScriptAccess='*' allowFullScreen='true'  type='application/x-shockwave-flash'    />";  String htmlPost = "</body></html>";  String htmlPre = "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"utf-8\"></head><body style='margin:0; pading:0; background-color: black;'>";  AdView m_adv = null;  String m_strVideoPath;  WebView webView;git

代碼能夠看出是經過Flash以及WebView的方式實現的。
通過兩個項目的分析,我能夠確認相應的實現思路了。本系統的架構分爲三層。
1 視頻實時監控層
2 視頻RTSP傳輸控制層
3 Android手機層web

第一層能夠經過不少不一樣的方法來實現。
1 使用咱們普通的攝像頭,而後經過FFMpeg來獲取視頻流。
2 經過特殊專用的監控攝像頭或者攝像機之類。而後根據攝像機的API來構造獲取視頻流。能夠參考海康家的解決方案。以前在作某監控項目用過她家的卡,效果很是不錯。windows

第二層的方法也不少。
1 使用FFMpeg項目的裏面的FFServer來實現,可能會有延遲,可是最容易演示。服務器

<Feed feed1.ffm>File /tmp/feed1.ffmFileMaxSize 200K</Feed>

而後使用FFMpeg將攝像頭的視頻重定向到/tmp/feed1.ffm中。架構

ffmpeg -f video4linux -s 320*240 -r 15 -i /dev/video0 http://localhost:8090/feed1.ffm

在外面就能夠經過app

./ffplay http://localhost:8090/feed1.ffm 訪問視頻流了

這種方式目前不能商用,只能演示。商用可能須要對FFServer作很大的修改。好比將其中的select模型改成epoll或者其餘。開發的時候,FFServer估計是爲了保證在windows以及Linux中的兼容性而採用select模型的。
2 使用Helix家的解決方案,收費比較高。
3 使用開源的gst-rtsp-server實現。
4 使用Flash Media Server來實現。ide

第三層方法能夠是兩種
1 使用VideoView實現。
2 使用Flash的方式實現LiveStream(對應與Flash Media Server的實現)。this

參考文章:
1 http://blog.sina.com.cn/s/blog_53b3dc830100mrd0.html
2 http://www.ffmpeg.org/ffmpeg.html
3 http://blog.csdn.net/seforna/article/details/3486227
4 http://blog.csdn.net/saphy/article/details/5472990
5 http://yjaps26.blog.163.com/blog/static/24483312200861091059866/
6 http://www.adobe.com/devnet/flashmediaserver/articles/webcasting_fme.html
7 http://blog.sina.com.cn/s/blog_46d93f190100us5h.html
8 http://general.blog.51cto.com/927298/200088
9 http://people.freedesktop.org/~wtay/
10 http://cgit.freedesktop.org/gstreamer/gst-rtsp-server/
11 http://blogs.gnome.org/uraeus/2008/10/13/gstreamer-rtsp-server/
12 http://gstreamer.freedesktop.org/download/
13 http://blog.csdn.net/wangjia184/article/details/6422971
14 http://www.cnblogs.com/yjmyzz/archive/2010/03/15/1686274.html

15 http://rg4.net/ezstreamsvr(封裝了一個流媒體傳輸服務器端)

相關文章
相關標籤/搜索