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

http://blog.csdn.net/mer1234567/article/details/7679833

最近手机安装了一个“千里眼”和千里眼家居远程监控的应用,对里面的实时监控交通路口的状态有点好奇。以是使用相应的方法反编译看看她的原理。
对于软件“千里眼”,经过代码的翻看,发现采用的是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(封装了一个流媒体传输服务器端)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值