位置: 编程技术 - 正文

Android手机实时视频监控(安卓实时屏幕)

编辑:rootadmin

推荐整理分享Android手机实时视频监控(安卓实时屏幕),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:安卓性能实时监控,android实时定位,安卓实时数据,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:%; height:%' src=' autoplay='true' quality='high' bgcolor='#' name='VideoPlayer' align='middle' &#; width='' height='' 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来实现,可能会有延迟,但是最容易演示。

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

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

ffmpeg -f video4linux -s * -r -i /dev/video0 访问视频流了

这种方式目前不能商用,只能演示。商用可能需要对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 (好像目前打不开)3、 应用程序的开发方法,并结合实际的应用系统,重点论述了Android 平台上视频监控客户端的设计思路。移植了音视频解码库FFmpeg 进行H. 视频解码,并采用OpenGL ES 实现实时视频显示。在无线局域网络的环境下对视频监控终端进行测试,达到了利用手机进行移动视频监控的目的。

  随着多媒体技术、视频压缩技术以及网络传输技术的发展,视频监控正朝着数字化、网络化、智能化方向持续发展,并越来越广泛地渗透到政府、教育、娱乐、医疗等领域。目前大部分的网络视频监控系统是基于WEB 服务器的, 监控终端为PC机,用户使用浏览器获取监控服务。由于互联网接入地点的限制,普通的网络视频监控无法满足用户在任何时间、任何地点获取监控信息的需求。

  本文介绍了一种以Android 智能手机为终端的视频监控系统,该系统将传统的视频监控与移动多媒体技术相结合,真正实现了移动视频监控。

  1系统的结构

  本文中的视频监控系统采用C/ S 体系结构。

  如图1 所示,该系统由视频采集端( 摄像头),视频服务器以及监控客户端等构成。

视频服务器是整个系统的核心部分,它将摄像头采集到的原始模拟信号转换为数字信号,并对视频数据进行编码压缩,最后通过Internet 将压缩后的数据传送至客户端。客户端通过TCP/ IP 协议访问服务器,通过对视频数据的接收、解码以及显示,实现实时预览功能。客户端也可以根据用户需求发送控制命令,实现对前端设备的控制操作,如云台控制等。

  服务器部分采用Hi 处理器芯片为硬件平台,并移植了嵌入式操作系统Linux 作为整个系统运行的软件环境。Hi 是一款基于ARM9 处理器内核以及视频硬件加速引擎的高性能通信媒体处理器,具有H. 和MJPEG 多协议编解码能力。

  本文以基于Hi 的远程视频监控系统为例,重点介绍了Android 平台上监控客户端的设计过程。

  2Android 开发介绍

  Android 是基于Linux 开放性内核的操作系统,是Google 公司在 年 月5 日公布的手机操作系统。Android 采用软件堆层的架构,主要分为三部分:底层以Linux 核心为基础,提供基本功能;中间层包括函数库和虚拟机;最上层是各种应用软件。

  Android 平台显着的开放性使其拥有众多的开发者,应用日益丰富,不仅应用于智能手机,也向平板电脑、智能MP4 方面急速扩张。

  Android 应用程序用Java 语言编写,每个应用程序都拥有一个独立的Dalvik 虚拟机实例,这个实例驻留在一个由Linux 内核管理的进程中。Dalvik支持Java Native Interface(JNI)编程方式,Android 应用程序可以通过JNI 调用C/ C&#;&#;开发的共享库,实现“Java&#;C冶的编程方式。开发Android 应用程序最简捷的方式是安装Android SDK 和Eclipse IDE.

  Eclipse 提供了一个丰富的Java 环境,Java 代码通过编译后,Android Developer Tools 会将它打包,用于安装。

3 监控客户端的设计与实现

  基于Android 平台的监控客户端的总体框架如图2 所示,分别由网络通讯模块、视频解码模块以及视频显示模块等构成。其中网络通讯模块接收来自服务器的所有数据,对数据进行解析,并将视频数据存入到视频缓冲区。视频解码模块负责从视频缓冲区中读取数据并送入H. 解码器进行解码。最后,采用OpenGL 图形库将解码后图像绘制到屏幕上实现视频播放。

Android手机实时视频监控(安卓实时屏幕)

3. 1 H. 视频解码器的实现

  在网络视频监控系统中,视频的编码压缩是非常必要和关键的工作,没有经过压缩的海量数据对网络传输系统来说是无法承受的[7] .H. 是目前最先进的视频压缩算法,它由视频编码层VCL 和网络提取层NAL 两部分组成。其中,VCL 进行视频编解码,包括运动补偿预测、变换编码和熵编码等;NAL 采用适当的&#;式对VCL 视频数据进行封装打包。H. 标准对编码效率和图像质量进行了诸多改进,且抗丢包性能和抗误码性能好,适应各种网络环境,非常适合于对压缩率要求高,网络环境复杂的移动视频监控。

  客户端接收的数据是经过H. 编码压缩后的数据,需要经过H. 解码还原视频图像后才能够显示,因此,H. 解码器是客户端的关键部分。这里移植了开源的音视频解码库FFmpeg 进行H. 解码。在Android 应用程序中使用FFmpeg 的步骤如下:

  (1)在Linux 环境下安装Android 原生开发工具包NDK.

  (2) 创建jni 文件夹,将FFmpeg 工程复制到文件夹下。创建HDecoder. c 源文件,提供Android程序使用的接口函数,文件需要包括JNI 的操作头文件《jni. h 》, 且函数名有固定的形式, 如com_ipcamera_PreView_HDecoder 表示com_ipcamera包下面PreView 类中HDecoder 函数。

  (3)创建Android. mk 文件,该文件包含正确构建和命名库的MakeFile 说明。分别在LOCAL_SRC_FILES 和LOCAL_C_INCLUDES 项中添加编译模块所需源文件和头文件目录。

  (4)执行NDK 开发包中的ndk鄄build 脚本,生成对应的。 so 共享库,并复制到Android 工程下的libs/armeabi 目录下。

  (5) 在Android 程序中通过System. loadLibrary(”库名称冶)加载所需要的库,加载成功后,应用程序就可以使用HDecoder 函数进行H. 的解码。

为了提高绘图的效率,客户端使用OpenGL ES实现视频图像的显示。OpenGL ES 是一个2D/3D轻量图形库,是跨平台图形库OpenGL 的简化版。

  OpenGL ES 专门针对手机、PDA 和游戏主机等嵌入式设备而设计,目的是为了充分利用硬件加速,适合复杂的、图形密集的程序。

  Android 中使用GLSurfaceView 来显示OpenGL视图,该类继承至SurfaceView 并包含了一个专门用于渲染3D 的接口Renderer,主要通过实现ON鄄DrawFrame、onSurfaceChanged 以及onSurfaceCreated等方法构建所需的Renderer.解码器解码一帧图像后,调用GLSurfaceView 的requeSTRender 方法通知OpenGL ES 完成视频图像的显示。使用OpenGL 绘图的核心代码如下:

3. 3多线程设计

  视频数据的接收和解码都是复杂、持续的过程,如果其中一个过程出现阻塞会影响整个程序的运行,因此,客户端使用多线程实现数据接收和视频解码的并行处理。在整个程序运行过程中,主线程响应用户操作,负责屏幕刷新工作,并创建两个子线程:数据接收和视频解码子线程,处理过程如图3 所示。

图3子线程处理流程。

  在Java 中, 多线程的实现有两种方式: 扩展java. lang. Thread 类或实现java. lang. Runnable 接口。这里通过继承Thread 类并覆写run()方法实现两个子线程。在多线程的应用中关键是处理好线程之间的同步问题,以解决对共享存储区的访问冲突,避免引起线程甚至整个系统的死锁。Java 多线程主要利用synchronized 关键字和wait( )、notify( ) 等方法实现线程间的同步。

  4 结束语

  目前,该系统已经在实验室进行测试,服务器输出fps CIF &#;式的H. 视频数据,客户端安装在Android 手机上,通过WIFI 接入无线局域网中与服务器建立连接,用户界面如图4 所示,可实现远程视频预览、云台控制等操作。

随着3G 时代的到来,数据传输速度有了大幅提升,为移动实时视频业务的实现创造更好的条件。

  手机用户可以直接接入3G 网络访问视频监控服务器,实现移动在线的实时视频监控。由此可见,手机视频监控市场潜力巨大,具有很好的发展前景。

解决“Cannot merge new index into a non-jumbo instruction”的问题 在将ADT和SDKTool升级到最新(分别是.1和.0.1)之后,我的一个工程(相对比较大)在编译并运行的时候,出现错误,Eclipse控制台输出如下信息:Unableto

android 功能引导界面实现 一.界面实现:借鉴了别人的实例,然后记录下引导界面的实现,总体来说实现不算困难,前提是要有个美工帮你做这些引导图片(找了张图片凑合用吧

android设置移动联通电信wap接入点 原文:android设置移动联通电信wap接入点源代码下载地址:

标签: 安卓实时屏幕

本文链接地址:https://www.jiuchutong.com/biancheng/381063.html 转载请保留说明!

上一篇:Activity和Service交互(service与activity数据交互)

下一篇:解决“Cannot merge new index 67208 into a non-jumbo instruction”的问题(解决口苦的最佳方法)

  • 申报表货物及劳务是什么
  • 非居民个人如何认定
  • 企业所得税本年实际缴纳不包括上年汇算清缴补缴税款吗
  • 购买产品再出售怎么入账
  • 企业所得税不含税价格怎么算
  • 津贴和补贴计入加班费吗
  • 固定资产加速折旧税收优惠政策
  • 餐饮通用机打发票可以报销吗
  • 金税盘全额抵扣分录
  • 如何存银行
  • 税务稽查可否清算土地增值税
  • 企业自建房产提成多少
  • 公司缴纳个人所得税会计分录
  • 收到的扶贫工作经费会计分录
  • 交易性金融资产的交易费用计入哪里
  • 出售股票会计怎么做分录
  • 进项发票可以抵扣吗
  • 南方建筑主编
  • 业务招待费业务宣传费
  • 个人承包公司的经营所得怎么算
  • 非金融机构有
  • 免抵退税金额是啥意思
  • 固定资产少计提了怎么办
  • 酒店行业增值税加计抵减是10%还是15%
  • wordpress导入主题教程
  • linux从入门到什么搞笑
  • 长期待摊费用如何结转
  • win7命令行模式
  • 用应付票据付应付账款
  • PHP:mcrypt_generic()的用法_Mcrypt函数
  • php判断查询是否有结果
  • php 进程通信
  • 一个简单安全的小故事
  • 驱动开发函数详解
  • 金融企业的代理业务
  • 研发支出资本化支出属于什么科目
  • 预提费用的会计分录2018
  • 纳税调增调减通俗易懂
  • 跨区预缴增值税申报表查不到怎么回事
  • php防盗链
  • 电力安装有前途吗
  • 小型公司怎么做账
  • 在建工程领用自产应税消费品
  • 建筑企业分项目信息采集表怎么填
  • 季节性临时工什么意思
  • 现金流量表为负数的几种原因
  • 积分兑换商品怎么查快递
  • 固定资产入账怎么做凭证和入资产卡片?
  • 出口免税进项税怎么处理
  • 施工企业外经证交费的时候工会经费是怎么计算的
  • 生产企业购进的生产原材料用来装修公司会计处理
  • 应付账款扣除赔偿后开发票吗
  • 为什么要进行结账和对账
  • 付给其他公司的服务费怎么记账
  • 运输公司自有车辆是什么意思
  • 小企业会计准则2023电子版
  • 有形资产负债率多少合适
  • 定期存款怎么做
  • mysql数据库备份方法
  • 使用Mysql5.x以上版本出现报错#1929 Incorrect datetime value: '''' for column ''createtime''的快速解决方法
  • win8pe无法识别硬盘
  • win7系统开机黑屏
  • linuxsu命令作用
  • 怎么给电脑装win8系统
  • win10不停的自动重启
  • 代码的历史
  • js数组随机抽奖
  • js复制数组的方法
  • 简易最新版本
  • unity3d跑酷游戏教程
  • 有关javascript的书
  • node stream(流)有哪些?
  • android内存泄露监测
  • activity与fragment的通信
  • 友盟模块
  • 浙江市税务局怎么进
  • 四川国家税务局官网
  • 购买增值税发票税务局打电话来问怎么处理?
  • 车船税收费标准表
  • 草地耕地占用税征收标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设