android 安防监控项目中如何获取网络中的摄像头(IpCamera)参数

android 安防监控项目中如何获取网络中的摄像头(IpCamera)参数,第1张

原理其实不难,一般情况下,监控录像采集设备分为采集卡和录像机。以录像机为例,只需让录像机连接上网络,并设置好IP地址,记录好设备的ID码,利用CMS软件(也可能是其他支持类软件),就可以在安卓手机上观看实时监控了

        本文之所以有必要编写并作记录,主要原因是因为在工作中开发出一个万能的自定义camera预览控件之后,本是一个提高效率以及提供一个强大能力的控件,但是产品并不能理解这个万能控件存在的意义,产品无法与技术设计相结合的理解使用;并且发现我们的智能业务部Camera自定义预览技术虽然是使用多年,但是我们并没有真正的形成规范,由于产品在不能够理解系统平台(Android/iOS)给产品和研发带来了什么,导致产品可能会出现在不理解系统平台以及系统知识的情况下,臆想产品所谓的形态;当产品设计脱离了系统平台所支持的技术点以及设计的初衷,就会导致回归问题的时候,出现不必要的讨论,其根结就是一点:“信息不同步,知识不同步”。

        所以,为了提高效率,就采用记录和分享的方式,尝试性推动产品、测试、研发三者对工程与架构的同步理解,更深的懂得程序架构设计意义,尝试性通过信息同步的方式,在一个统一的知识储备的平台下,共同完成一个更高效,和高品质的工程产品。(为了能够让非技术:产品设计,以及测试都能够理解,所以,使用了更多的白话解释)

        附:强大灵活的FsCameraTextureView(第一版,自适应截取)( 第二版本版本:自适应展示)

        首先,抛出几个问题,

      1)什么是摄像头支持的previewSize?

      2)什么是视频或者的pictureSize

      3)  如何获取和查看摄像头支持的PreViewSize 和PictureSize ?

      4)手机预览所见的区域SurfaceView(TextureView)与camera 的previewSize的关系是什么?

      5)为什么会设计了两种预览方式view,两种预览方式都会有什么样子的效果呢?

一,概述

通过Android Camera拍摄预览中设置setPreviewCallback实现onPreviewFrame接口,实时截取每一帧视频流数据(简单说来,就是通过设置一个接口,接收系统回调通知我们的每一帧数据)

二,知识点

    1, camera支持的格式:

    2,拍照流程

    3,camera权限

  三,Android Camera中PreviewSize、 PictureSize、 SurfaceView(TextureView)之间的关系

        1,PreviewSize:

          相机预览时候的能支持的尺寸,简单的说一下,就是预览的大小,也就是拍照前能够看到的大小。(通过Android手机相机可以试一下,这个参数设置不同,同样的焦距下,拍摄桌子上一个固定距离的东西,看到的视野会不同)

          相机的预览尺寸,不能随意的设置值,只能通过camera的parameters的getSupportedPreviewSizes方法,获取支持的预览尺寸列表,并从列表中选择一个设置在parameters中。(通俗简单的说就是,获取camera中能够支持的预览大小合集,如果你想要查看某个预览对应的尺寸,就把该尺寸设置到camera的属性中即可,则camera会返回相对应尺寸的预览数据流提供显示)。

        2,PictureSize :

指的是拍照之后,最终拍摄到的大小,也就是的质量。尺寸同样也只能从支持的列表中选取一个设置。 调用camera的takePicture方法(拍照)后,获得拍照的图像数据,注意picturesize和previewsize的宽高比也要保证一致,否则获取的会将preview时的图像裁剪成picturesize的比例。 previewsize的分辨率,只会影响预览时的分辨率,不会影响获取的分辨率,所以preview只是确定了图像的取景最大范围。最终的分辨率是由picturesize来决定。 所以,最好的设置方法,例如:previewsize为1280720,picturesize为25601440。(由于我们没有拍照业务,目前这个知识,不做深究)

        3,SurfaceView(TextureView)

          用于展示camera预览图像的view,就是将preview获得的数据,放在这个view上。所以如果preview的宽高比和SurfaceView的宽高比不一样,就会导致看到的图像拉伸变形。图像拉伸变形解决的办法:

          (1)就是在确定preview的分辨率后,重新设置SurfaceView宽高;

          (2)如果SurfaceView宽高定死,则需要获取一个比例适合SurfaceView尺寸的PreviewSize 的preview,尽量小的裁剪,然后填充在SurfaceView中。

        4,利用的显示方式,理解Preview与SurfaceView(TextureView)显示关系

          ImageView (UI上面设计的一个控件)与bitmap 的关系,比如限定死一个ImageView的大小,但是与ImageView尺寸不一致,就会有几种方案,首先选取一张长方形19201080的,ImageView就是紫色部分,无论长宽比都比ImageView要大。

适配例1:拉伸填充ScaleTypeFIT_XY :虽然被全部填充,但是整个为了适配已经扭曲,失真,缩放到控件大小,完全填充控件大小展示。

适配例2:等比例裁剪填充ScaleTypeCENTER_CROP ,因为在该模式下,会被等比缩放直到完全填充整个ImageView,并居中显示。该模式也是最常用的模式了。如图可以看到,的高度是能完全展示出来的,但是左右部分被进行了裁剪,并没有完全显示。

适配例3 :  ScaleTypeCENTER_INSIDE,此模式,用以完全展示内容为目的。将被等比缩放到能够完整展示在ImageView中并居中,如果大小,小于控件尺寸,那么就直接居中展示该

            适配ImageView方式还有很多,就不一一列举,这三种已经足够重要,为什么讲解camera预览,却穿插了的适配,其实可以这么理解,camera的preview就是由多张组成,不断的像帧动画一样变化,而SurfaceView就是一个载体,相当于ImageView,业务中定死了SurfaceView的大小之后,被动的承载你选择的previewSize,来展示camera的Preview,你可以选择类似于前面三种例子来理解preview的填充,以下会举例说明preview的填充策略选择有哪几种方式,我们会采用哪种方式:

        1)拉伸填充,自适应view,不可取,比如:手机的SurfaceView是整个手机的屏幕尺寸(全屏填充),或者任意尺寸比例的surfaceView,使用这种方式,就如同(适配例1)的方式,导致视频扭曲,拉伸。

        2)等比例裁剪填充,目前我们项目中,采用的就是这种方式,并且提供给很多三方使用,已经成为一种独立,并且稳定的技术实现自定义view,简单说一下视频的适配策略方式,SurfaceView随便由业务方,自定义宽度大小,比如业务方选择了19001000的SurfaceView, 我们的适配过程是:(1)从PreviewSize列表中选取最接近SurfaceView尺寸的PreviewSize(假设该摄像头,只支持19201080,和320640),19201080最接近,所以被获取;(此处展示一下蹩脚的英文Try to find an size match aspect ratio and size,尝试找到纵横比与view大小比适中的一个尺寸)(2)等比例裁剪填充到SurfaceView,首先我们设计的逻辑是,先选取一个缩放比例,假设等比例1920的按照SurfaceView的宽度等比例缩小到1900,而为了不让Preview失真,则高度1080等比例缩小的值是106875(等比例方程式,这里就不重复初中的知识,请自行计算),所以被压缩成为19001068这个尺寸,依旧保证完整,并且不失真。(3)将等比例缩减的,19001068进行显示在19001000的SurfaceView中,就会有一种效果类似(适配例2),宽度全部展示,高度被裁剪。(如同  适配例2中左右部分裁剪一样的道理)                       

          3)完全展示camera内容的缩放填充(类似适配例3),我们打开任意一部手机的camera,预览图像都没有全屏幕展示,类似拍照功能,所见即所得,PreviewSize是多少,就显示什么样子的比例尺寸,以及最后生产的照片比例就是多少,我们的自定义view,也可以随意设置大小,此模式下,用以完全展示camera内容为目的。Preview将被等比缩放到能够完整展示在SurfaceView中并居中,但是可能会有部分位置无法填充(类似适配例3显示效果)。

(该方式只是进行了技术储备,由于没有业务场景设计,所以没有使用,目前只是储备了这样的自定义控件)

四,灵活的自定义TextureView预览控件       

        FsCameraTextureView(第一版,自适应截取):等比例裁剪填充,方式(适配方式2),采用前面说的适配方式2,而产出的一种自定义view,2019年5月产出至今,在金融APP,以及商城的app中使用,经过逐步优化,和多版本检验,目前该控件,拥有以下特点:  1)稳定:目前各个使用场景,均无逻辑崩溃,内存泄漏,线程等任意问题; 2)灵活:随意设置预览view的尺寸大小,自适应任意业务设计;不仅仅满足刷脸业务,并且满足任意相机预览业务方使用; 3)提高效率,减轻工作量:使用简单, *** 作步骤简洁,接入只需要两步;减轻接入端,或者想要使用相机预览的业务的工作量,不需要重复造车,并且安全稳定。

      输出的业务方有(经不完全统计):(目前业务为保密进行公网保密处理)1)创新科技业务部-区块链部门 2)泰国人脸识别业务SDK3)S DBank 人脸业务4)核验身份z业务5)HTBank 人脸业务 6)云,商业平台部门

      FsAllPreviewCameraTextureView(技术储备版,全预览模式显示):完全展示camera内容的缩放填充,采用前面说的(适配方式3)适合拍照相关的业务使用,优点同样是,外部业务随意改变view大小,可以自适应view,由于目前没有业务方使用,暂时做储备,不深入讲解。

如果可以控件开源成功,后期,我将开源这两个控件,让更多的使用方使用,我们也希望共同技术进步,提高工程产出的使用能力。

预计下一次分享内容是(临时命名)

1)人脸核验内存和线程爆表到泄漏为零

2)分享七年前参于的Scrum(如何提高岗位间效率所定制的敏捷开发过程)

本文参考:

>

当然可以,这个只需要获取到系统的相机权限就可以。获取到相机权限后,可以进行拍照等 *** 作,相对来说,iOS比安卓更安全,权限管理方面做得更好。

最常见的就是手机上的人脸识别了,目前为止,安卓只有三星和华为的部分手机在使用3D结构光技术,iOS当然只有Apple自己了,iOS也是最早在手机上使用的手机厂商,到目前为止,仍然是做得最好的。

3D结构光不需要借助摄像头就能解锁,而非3D结构光的人脸识别技术则几乎需要摄像头进行人脸识别,说白了就是需要打开你的相机才能解锁,安全性自然比较低。

如果手机中毒或是被病毒入侵并且获得相机权限,网络权限,存储权限,那么就可以达到远程监控的目的,通常手机上的远程直播软件或是远程视频监控软件都是这么做的,只不过正常的软件,在使用摄像头的时候,会让你知情,会在你的屏幕上显示摄像头所拍摄到的实时画面,但有的不会,为了效率和美观就可以隐藏了,比如支付宝的人脸识别,在你解锁失败的时候他就会显示实时画面窗口。

如果按照最坏的想法,且不论是真正的黑客或者是某些图谋不轨的个人,手机被植入病毒权限被控后,别说打开摄像头了,你的手机所有资料都可以被暴露出来

关于权限,我以华为为例,我们最常见的是地理位置,也就是GPS 或北斗也好。相机权限,存储权限,安装权限,网络权限,通讯录,麦克风,电话,日历,后台自启管理等等,安卓手机品牌众多,不同手机厂商对于权限的描述不尽相同,有的会细分,有的则不会。和苹果有所不同的是,苹果的相机和相册权限是分开的,而华为的相册权限就是存储权限,这里安卓大部分都一样。

iOS和安卓的权限管理机制不一样,当然了这也是符合安卓一贯开放的的态度相吻合。

我平时用iOS比较多,安卓虽然作为备用机,但也是没离开过。据说安卓12的权限管理会有所更新,我想可以期待一下

最后呢,要提醒一下,不论是安卓手机还是windows电脑,不论是获取摄像头还是其他权限,大部分都是从软件层面上就做得到的,所以对于来自非正规渠道来源的app要谨慎安装,链接要谨慎点击,如果安装了不确定安全的软件,切记在谨慎授权,比如位置,相册和通讯录等等敏感权限。在非必要条件下,即使是来自所谓正规官方的app,我仍然建议你在非必要的情况下,优先不给予任何权限,记住,我说的是非必要情况下,举个例子,你下载了某个需要美颜的相机app,你你不授予相机权限肯定没办法用,在安卓上应该是直接闪退了。在iOS则可以打开只是会提醒需要权限。但是如果你下载的是一个网络视频播放器app,却要求你授予通讯录权限,相机权限,这些非必要的权限就不必授予。

安卓手机怎么开启摄像头用微信扫二维码

打开微信,点一下+号,里面有一个扫一扫,然后会自动启动摄像头,你对着二维码照一下就好了,望采纳

手机web页面怎么调用摄像头执行扫描,获取数据?

HTML5技术支持WebApp在手机上拍照,显示在页面上并上传到服务器。这是手机微博应用中常见的功能,当然你也可以在其它类型应用中适当使用此技术。

1、 视频流

HTML5 的 The Media Capture(媒体捕捉) API 提供了对摄像头的可编程访问,用户可以直接用 getUserMedia(请注意目前仅Chrome和Opera支持)获得摄像头提供的视频流。我们需要做的是添加一个HTML5 的 Video 标签,并将从摄像头获得的视频作为这个标签的输入来源。

此时,video 标签内将显示动态的摄像视频流。下面需要进行拍照了。

2、 拍照

拍照是采用HTML5的Canvas功能,实时捕获Video标签的内容,因为Video元素可以作为Canvas图像的输入,所以这一点很好实现。主要代码如下:

var canvas=documentcreateElement(‘canvas’); 动态创建画布对象

var ctx=canvasgetContext(’2d’);

var cw=vw,ch=vh;

ctxfillStyle=”#ffffff”;

ctxfillRect(0,0,cw,ch);

ctxdrawImage(video_element,0,0,cw,ch,0,0,vw,vh); 将video对象内指定的区域捕捉绘制到画布上指定的区域,可进行不等大不等位的绘制。

documentbodyappend(canvas);

3、 获取

从Canvas获取数据的核心思路是用canvas的toDataURL将Canvas的数据转换为base64位编码的PNG图像,类似于“data:image/png;base64,xxxxx”的格式。

var imgData=canvastoDataURL(“image/png”);

这样,imgData变量就存储了一长串的字符数据内容,表示的就是一个PNG图像的base64编码。因为真正的图像数据是base64编码逗号之后的部分,所以要让实际服务器接收的图像数据应该是这部分,我们可以用两种办法来获取。

第一种:是在前端截取22位以后的字符串作为图像数据,例如:

var data=imgDatasubstr(22);

如果要在上传前获取的大小,可以使用:

var length=atob(data)length; atob 可解码用base-64解码的字串

第二种:是在后端获取传输的数据后用后台语言截取22位以后的字符串(也就是在前台略过上面这步直接上传)

用手机怎样连接摄像头

我以海康萤石的摄像头举例说明。

第一:你得有摄像头吧,萤石的摄像头从169-599,基本包含了各个价位段。

第二:拿出你的智能手机,从官方渠道下载萤石云视频APP,然后注册登录。

第三:用APP自带的扫描功能,扫一扫摄像头上面的二维码,然后进行绑定。

第四:用附赠的小物件把摄像头装到合适的地方。这样就可以用手机尽情观看视频录像了

ps:其他品牌的摄像头连接方式基本一样,可以参照这个。

我家安装了摄像头,我想在手机上看怎么弄?我已经扫了二维码

如果是监控卡就没办法了

手机后摄像头坏了怎么设置前摄像头扫二维码

不能,系统默认后置扫码

小米手机摄像头怎么扫二维码

小米系统工具里面有个扫一扫

这个直接可以扫描人家分享的无线二维码

然后就可以连接无线

话随是这样说的是

但是今天答题遇到一个分享的我扫了半天没反应,他自己扫描也没反应

手机怎样与摄像头连接

使用安卓或者苹果手机先去下载萤石云视频app。

注册萤石账号登录

用萤石云app扫描设备身上的二维码,按照提示步骤与设备连接。

查看录像

家里的监控怎么弄在手机看?

首先扫描摄像机后面二维码,下载摄像机app,注册等级,添加设备就可以看了前提家里有网,摄像机是网络摄像机

html5怎么调用手机摄像头并且扫描二维码

需要加载cordovajs 方法: documentaddEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { pictureSource = navigatorcameraPictureSourceType; destinationType = navigatorcameraDestinationType; } 相册 function fromCamera() { var source = pictureSourcePHOTOLIBRARY; navigatorcameragetPicture(function (imageData) { setimg(imageData); }, function (message) { if (source == pictureSourceCAMERA) alert('加载照相机出错!' + message); else alert('加载相册出错!' + message); }, { quality: 50, destinationType: destinationTypeFILE_URI, sourceType: source }); } 拍照 function EditImgPz() { navigatorcameragetPicture(function (imageData) { setimg(imageData); }, function (message) { alert(message); }, { quality: 50, destinationType: navigatorcameraDestinationTypeFILE_URI, sourceType: CameraPictureSourceTypeCAMERA, allowEdit: true, encodingType: CameraEncodingTypeJPEG, popoverOptions: CameraPopoverOptions, saveToPhotoAlbum: true }); }

在家安装,监控摄像头怎么和手机连结?

我以海康萤石摄像头举例说明

打开摄像头安装

手机下载萤石云视频app,用手机号注册

用app上面的扫码功能扫描摄像头上面的二维码进行绑定,就可以自由观看监控录像了

其他厂商几乎也是一样的步骤,都有专用的app

以上就是关于android 安防监控项目中如何获取网络中的摄像头(IpCamera)参数全部的内容,包括:android 安防监控项目中如何获取网络中的摄像头(IpCamera)参数、Android 实时视频采集—Camera预览采集与显示(平台系统camera功能理解分享)、如何获得他人手机前置摄像头实时等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9277231.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存