不好意思,让大家久等了!今天我要实现的一个功能是异步录像!先讲下为什么要提出这样一个问题----假设被监控区域出现了异常(一个陌生人进入),那么本监控系统就要对这一段时间发生的一切进行录制,但此同时我们又在另一端观测这一段时间的实时视频,如何才能做到这一点-----既能录像又不打断我们观测实时视频?
解决原理:我们可以制作发布两个视频流,一个视频流的作用仍然是我们上篇文章所讲到的“把实时视频流传送到FMS服务器”,另外一个视频流的作用则是播放此实时视频流,假如发生异常则利用此视频流进行录像,这样就解决了第一段落提出的问题。 下面的代码可以覆盖上篇文章提到的server.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" height="571">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
import flash.media.Microphone ;
import mx.controls.Alert ;
import flash.display.Graphics ;
//测试网络可行性
private var conne:NetConnection = new NetConnection() ;
private function xianshi():void {
//必须 在AS3.0中默认的ObjectEncoding为AMF3,但是FMS不支持AMF3,所以
//要显示的声明为AMF0
conne.objectEncoding = ObjectEncoding.AMF0 ;
conne.connect("rtmp://127.0.0.1/example") ;
conne.addEventListener(NetStatusEvent.NET_STATUS,chuli) ;
}
private var nnnns:NetStream = null ;//专门用来向连接到服务器的客户端提供共享视频流
private var nnnnns:NetStream = null ;//分支视频流 专门用来录像
private var time:String = null ;//定义时间寄存器
private function chuli(e:NetStatusEvent):void {
var result:String = e.info.code ;
switch(result) {
case "NetConnection.Connect.Success":
vd.attachCamera(Camera.getCamera()) ;
nnnns = new NetStream(conne) ;
nnnns.attachAudio(Microphone.getMicrophone()) ;
nnnns.attachCamera(Camera.getCamera()) ;
//播放server端的视频流(实时视频流,供client端播放)
nnnns.publish("wwww","live") ;
nnnnns = new NetStream(conne) ;
nnnnns.attachAudio(Microphone.getMicrophone()) ;
nnnnns.attachCamera(Camera.getCamera()) ;
time = new Date().getTime().toString() ;
nnnnns.publish(time,"live") ;//记录当前时间,以此作为标志位,发布到FMS
nnnnns.addEventListener(NetStatusEvent.NET_STATUS,netStreamHandler) ;
break;
case "NetStream.Play.StreamNotFound":
Alert.show("失败") ;
break;
default :
Alert.show("缺省") ;
break ;
}
}
//停止播放
private function tingzhi():void {
nnnns.close() ;
nnnnns.close() ;
conne.close() ;
}
private function bofang():void {
nnnns = new NetStream(conne) ;
var v:Video = new Video() ;
v.attachNetStream(nnnns) ;
v.width = 276 ;
v.height = 202 ;
vv.addChild(v) ;
nnnns.play("1199001232984") ;
}
private function luxiang():void {
time = new Date().getTime().toString() ;
nnnnns.publish(time,"record") ;
}
//停止录像
private function stopLuxiang():void {
nnnnns.close() ;
}
//NetStream事件处理器
private function netStreamHandler(e:NetStatusEvent):void {
var s:String = e.info.code ;
switch(s) {//停止录像时,再记录当前时间,并以此为标志位,发不到FMS
case "NetStream.Record.Stop" :
nnnnns = new NetStream(conne) ;
nnnnns.attachAudio(Microphone.getMicrophone()) ;
nnnnns.attachCamera(Camera.getCamera()) ;
time = new Date().getTime().toString() ;
nnnnns.publish(time,"live") ;
break ;
}
}
//拍照功能实现
private function paizhao():void {
var bmp:BitmapData = new BitmapData(vd.width,vd.height,true,0) ;
bmp.draw(vd) ;
var bitMap:Bitmap = new Bitmap(bmp) ;
image.source = bitMap ;
}
]]>
</mx:Script>
<mx:VideoDisplay x="0" y="0" width="264" height="213" id="vd"/>
<mx:Button label="连接服务器" click="xianshi()" x="10" y="247">
</mx:Button>
<mx:Button click="tingzhi()" x="99" y="247" width="125" height="21" label="断开与服务器连接">
</mx:Button>
<mx:VideoDisplay x="285" y="11" width="276" height="202" id="vv"/>
<mx:Button x="458" y="247" label="播放" click="bofang()"/>
<mx:Button x="302" y="247" label="开始录像" click="luxiang()"/>
<mx:Button x="380" y="247" label="停止录像" click="stopLuxiang()"/>
<mx:Button x="229" y="247" label="拍照" click="paizhao()"/>
<mx:Image x="45" y="314" width="264" height="213" id="image"/>
</mx:Application>
请大家注意看下,写注释的地方,那些是本篇文章的核心!(因为代码比较多,因此本人大致做了些删改),有什么不明白的可以留言,本人将会为大家解答!
下篇文章就是本视频监控软件最核心的地方----图像识别,至今为止,本人仍在探寻较为高效的算法。哪位兄弟对此方面的图像识别算法有研究,可以共同交流下!
分享到:
相关推荐
《中盛益华车站网络视频监控解决方案》是一个针对交通港口的高级技术方案,旨在通过现代化的网络视频监控系统提升车站的安全管理和效率。该方案的核心在于CSVISION视频管理系统,它采用了电信级的产品设计理念,保证...
该Android远程视频监控程序源码是一个典型的移动应用开发案例,主要展示了如何在Android平台上实现远程视频的实时监控功能。这个项目对于计算机科学和技术、软件工程等专业的学生进行毕业设计或论文研究具有很高的...
2. **录像监控**: 录像功能同样可以通过`Intent`启动系统相机应用的录像模式。但是,为了实现监控功能,可能需要使用`MediaRecorder`类来直接控制录制过程。`MediaRecorder`可以设置视频分辨率、帧率、编码格式等...
【基于C#的WPF多视频监控...总的来说,【基于C#的WPF多视频监控管理系统】是利用现代软件技术实现的高效视频监控解决方案,它集成了WPF的可视化优势和C#的强大功能,为用户提供了一种灵活、高效的多路视频监控工具。
标题中提到的"安卓拍照上传录像监控录屏相关-简单的实现了视频下载并且压缩成缩略图"是一个项目实践,它涉及到以下几个关键知识点: 1. 视频下载:在Android中,我们可以使用HttpURLConnection或者OkHttp等库来实现...
3. **录像与监控**:录像功能可以通过MediaRecorder类来实现,它允许开发者配置视频和音频源、编码参数以及输出文件。监控功能则可能结合摄像头API和网络传输技术,将实时视频流发送到服务器或云端,以便远程查看。...
在安卓平台上,拍照、录像、监控以及屏幕录制是常见的功能,尤其对于开发者而言,理解这些功能的实现原理和代码逻辑至关重要。本压缩包文件“安卓拍照上传录像监控录屏相关-camera应用修改过可以在4.0系统上运行。....
8. **多线程与异步编程**:视频监控系统通常需要处理大量的并发任务,因此开发者需要熟悉多线程和异步编程,以确保程序的高效运行和用户体验。 9. **调试与日志记录**:在开发过程中,调试和日志记录是不可或缺的...
在IT行业中,视频监控系统是安全领域不可或缺的一部分,特别是在物联网(IoT)和智能家居系统的发展中,其重要性日益凸显。大华作为知名的安防设备制造商,提供了丰富的开发文档,帮助开发者构建基于Web、Android和...
2. **录像监控**:录像功能同样需要利用`Camera API`或`Camera2 API`,但与拍照不同,需要持续采集视频帧并存储为视频文件。在安卓中,可以使用`MediaRecorder`类来处理视频录制,包括设置视频分辨率、帧率、编码...
DVR是一种用于录制和播放视频的硬件设备,而DVS则是一种软件解决方案,可以将模拟视频信号转换为数字格式并进行网络传输。 要实现SWT与DVR-DVS的连接,我们需要遵循以下步骤: 1. **导入相关库**:首先,确保你的...
该压缩包文件涉及的知识点主要集中在Android客户端与电脑服务器之间的实时通信,以及视频录制、监控和屏幕分享功能的实现。以下是对这些知识点的详细说明: 1. **Android客户端开发**: - **Socket通信**:Android...
在安卓平台上,拍照、录像、监控以及录屏是常见的功能,尤其在开发移动应用时,这些功能往往不可或缺。本示例“安卓拍照上传录像监控录屏相关-网页调相机拍照并将图片显示到网页Demo.rar”提供了如何在网页环境中...
4. 录像功能模块:按需回放录像,支持多路同步或异步回放,具备帧控制和图像储存功能。 四、系统优势 1. 远程监控:利用网络实现远程监控,适应未来数字化、网络化的趋势。 2. 集中管理:通过CSVISION视频管理系统...
在实际开发过程中,为了确保流畅的视频显示,可能需要处理一些性能优化问题,如合理设置视频帧率、分辨率,以及使用异步编程避免阻塞UI线程。另外,考虑到多路视频同时播放可能会消耗大量系统资源,还可以考虑使用...
标题"**c++ 社区视频监控系统带使用录像.zip**"指出这是一个基于C++编程语言开发的视频监控系统项目,且包含了使用录像,这意味着它不仅提供了软件代码,还提供了如何操作和使用该系统的视频教程。这个项目可能是一...
本项目聚焦于使用C#编程语言实现调用视频摄像头进行录像和抓拍功能,这在安全监控、远程协作、家庭自动化等多个场景中都有广泛的应用。 首先,我们要了解C#如何操作硬件资源。在.NET框架中,Microsoft提供了`System...
在IT行业中,视频监控系统是安全防护的重要组成部分,海康威视作为该领域的知名品牌,提供了丰富的设备和服务。本文将深入探讨如何使用VC6.0编程环境,结合SQL Server数据库,从海康录像机中下载特定时间段的视频...
雄迈SDK是专为开发者设计的一套工具包,包含了丰富的API接口,能够帮助开发者快速构建视频监控、录像回放、云台控制、报警处理等功能的应用程序。 在这个项目中,开发者可能使用了以下关键知识点: 1. **C#基础**...
《构建基于Web的视频监控系统:深入探讨Visual C++与Web技术的融合应用》 视频监控系统在现代社会中扮演着至关重要的角色,广泛应用于安全防范、交通管理、商业运营等多个领域。随着网络技术的发展,基于Web的视频...