Android中实时视频监控方案设计思路

最近手机安装了一个“千里眼”和千里眼家居远程监控的应用,对里面的实时监控交通路口的状态有点好奇。以是使用相应的方法反编译看看她的原理。
对于软件“千里眼”,经过代码的翻看,发现采用的是VideoView中访问RTSP实时视频流的思路实现的。
反编译后的代码

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


软件千里眼家居远程监控采用的是另外一种思路:
从反编译代码可以看出

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'  align='middle' +  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;

代码可以看出是通过Flash以及WebView的方式实现的。
经过两个项目的分析,我可以确认相应的实现思路了。本系统的架构分为三层。
1 视频实时监控层
2 视频RTSP传输控制层
3 Android手机层

第一层可以通过很多不同的方法来实现。
1 使用我们普通的摄像头,然后通过FFMpeg来获取视频流。
2 通过特殊专用的监控摄像头或者摄像机之类。然后根据摄像机的API来构造获取视频流。可以参考海康家的解决方案。之前在做某监控项目用过她家的卡,效果非常不错。

第二层的方法也很多。
1 使用FFMpeg项目的里面的FFServer来实现,可能会有延迟,但是最容易演示。

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

然后使用FFMpeg将摄像头的视频重定向到/tmp/feed1.ffm中。

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

在外面就可以通过

./ffplay http://localhost:8090/feed1.ffm 访问视频流了

这种方式目前不能商用,只能演示。商用可能需要对FFServer做很大的修改。比如将其中的select模型改为epoll或者其他。开发的时候,FFServer估计是为了保证在windows以及Linux中的兼容性而采用select模型的。
2 使用Helix家的解决方案,收费比较高。
3 使用开源的gst-rtsp-server实现。
4 使用Flash Media Server来实现。

第三层方法可以是两种
1 使用VideoView实现。
2 使用Flash的方式实现LiveStream(对应与Flash Media Server的实现)。

参考文章:
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(封装了一个流媒体传输服务器端)

 

你可能感兴趣的:(linux,android,String,server,video,Flash)