首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TextureView上的Xamarin.Android摄像头被拉长

TextureView是Android提供的一个用于显示视频或者图像的视图控件,而Xamarin.Android是一个用于开发Android应用程序的跨平台开发工具。在Xamarin.Android中使用TextureView来显示摄像头画面时,可能会出现画面被拉长的情况。

这种情况通常是由于TextureView的宽高比与摄像头输出的画面宽高比不一致导致的。为了解决这个问题,可以通过以下步骤进行调整:

  1. 获取摄像头的预览尺寸:通过Camera类的getParameters()方法获取摄像头的参数,然后使用getSupportedPreviewSizes()方法获取支持的预览尺寸列表。选择一个与TextureView宽高比相近的预览尺寸。
  2. 调整TextureView的宽高比:根据选择的预览尺寸,计算出与之相近的TextureView的宽高比,并设置给TextureView。
  3. 调整摄像头的预览尺寸:将选择的预览尺寸设置给摄像头的参数,然后通过setParameters()方法将参数应用到摄像头。
  4. 开始预览:通过Camera类的startPreview()方法开始预览摄像头画面。

通过以上步骤,可以确保TextureView上显示的摄像头画面不会被拉长。

在腾讯云的产品中,可以使用腾讯云的云直播(Live)服务来实现摄像头的直播功能。腾讯云云直播是一项基于云计算和互联网技术的直播服务,提供了丰富的功能和工具,可以满足各种直播场景的需求。具体可以参考腾讯云云直播产品介绍:腾讯云云直播

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android流媒体开发之路一:Camera2采集摄像头原始数据并手动预览

Android Camera2采集摄像头原始数据并手动预览 最近研究了一下android摄像头开发相关技术,也看了Google提供Camera2Basic调用示例,以及网上一部分代码,但都是在TextureView...等预览基础实现,而我想要做是在不预览情况下,能获取到摄像头原始数据流,并由自己来决定是否绘制显示。...调用libyuv做RGB之间数据转换   获取到YUV数据之后,就可以在UI界面上进行绘制了,通过简单了解,可以通过OpenGLES来绘制,也可以转为Bitmap直接在TextureView绘制。...然而后来发现,android.graphics.Bitmap并不支持直接将YUV数据存入,只能转为RGB数据格式,才能存入Bitmap,进而在TextureView绘制。...绘制图像 在绘制图像时候,有个坑,那就是图像旋转,这个是由于手机上摄像头传感器视野坐标,一般都是旋转了90度或270度,所以,需要把摄像头采集到画面,进行旋转,才能还原出正确视野画面。

3.1K50

他们试图改变摄像头监控城市生活

摄像头无时无刻不在侵犯隐私 过去十年,中国是监控摄像头增长最快国家,截至去年底,全国在公共区域共安装了 1.76 亿个摄像头,而且调查预计在三年内中国安装摄像头数量会增加到 6.26 亿个。 ?...在摄像头侵犯公民隐私问题上,也发生过很多大案要案,比如 17 年底,360 水滴直播静默上传用户摄像头监控视频。...所有的数据会通过 WiFi 传送到 Density 云处理器,进行数据分析。第三方数据对接可以通过 API 实现。 ? Density 硬件系统可以免费安装使用,只对数据访问收费。...说回到摄像头 城市空间中大多数摄像头,都主要用于城市治安和交通监控,的确公共空间图像监控系统证实可以帮助城市增加破案率。...中国已建成世界最大视频监控系统「中国天网」,它可以实时清晰地检测道路上车辆种类颜色及行人年龄、性别、衣着等,使犯罪分子无处遁形。

57730
  • GoPro用作Linux网络摄像头.安装

    这个项目是GitHub上面推荐一个项目,小哥更新还算勤快。...我系统是arch,截图工具我用不了了,就没有用Linux系统做测试 文章来源就是以前我写arduino控制gopro哪个老哥成果 这个也是 ? 作者是gopro8硬件,软件不用适配 ?...对应下载文件 ---- 使用步骤就是,先执行安装脚本。...这也可能随着时间推移而改变。 -a、 --自动启动自动启动ffmpeg,将GoPro作为视频设备提供给您操作系统。 如果省略此标志,请打印相应命令以自行运行。...(通常是您“默认/家庭”用户) -五、 --详细回显每个执行命令 -h、 --帮助显示此帮助 命令: 网络摄像头以网络摄像头模式启动GoPro 以上是命令参数翻译 ?

    2.5K20

    使用 PreviewView 来展示相机预览

    不同设备会导致不一致行为,包括设备、屏幕尺寸、摄像头硬件支持水平,还会需要适配诸如分屏模式、不同锁定方向和可动态调节尺寸展示窗口等显示模式,为了解决这些问题并在多种设备提供无缝体验,PreviewView...因此在这些设备,PreviewView 只能使用 TextureView 作为实现模式。...其中最常用是 FIT_CENTER 和 FILL_CENTER,前者将预览界面在保证宽高比前提下进行缩放然后居中,后者不会进行缩放,保证居中但是可能会导致画面裁剪。...MeteringPointFactory 会将对焦目标的坐标转换为摄像头传感器坐标,然后再使用摄像头对该区域进行对焦。...) 实现,但是在需要时候会转而使用 TextureView; 将诸如 ImageCapture 和 ImageAnalysis 这样用例绑定到 LifecycleOwner ,创建一个 surfaceProvider

    2.8K20

    使用 PreviewView 来展示相机预览

    不同设备会导致不一致行为,包括设备、屏幕尺寸、摄像头硬件支持水平,还会需要适配诸如分屏模式、不同锁定方向和可动态调节尺寸展示窗口等显示模式,为了解决这些问题并在多种设备提供无缝体验,PreviewView...因此在这些设备,PreviewView 只能使用 TextureView 作为实现模式。...其中最常用是 FIT_CENTER 和 FILL_CENTER,前者将预览界面在保证宽高比前提下进行缩放然后居中,后者不会进行缩放,保证居中但是可能会导致画面裁剪。...MeteringPointFactory 会将对焦目标的坐标转换为摄像头传感器坐标,然后再使用摄像头对该区域进行对焦。...) 实现,但是在需要时候会转而使用 TextureView; 将诸如 ImageCapture 和 ImageAnalysis 这样用例绑定到 LifecycleOwner ,创建一个 surfaceProvider

    1.7K00

    Android相机应用基本功能实现

    参数callback为相机打开时回调,参数handler为callback调用时所在线程 CameraDevice 描述系统摄像头,类似于早期Camera **createCaptureRequest...第三个参数描述了 StateCallback 调用时所在线程 CameraCharacteristics 描述摄像头各种特性,类似于Camera1中CamerInfo。...,一个是预览尺寸(在屏幕显示),一个是保存图片尺寸(保存到sd卡中图片尺寸) 有两个方向,一个是手机方向(如果是竖屏应用的话此方向为0),另一个是摄像头方向(一般来说,前置摄像头方向为270,后置摄像头方向为...90) 注:如果对手机方向和摄像头方向还不太理解小伙伴,建议看一下Android: Camera相机开发详解() —— 知识储备,里面有对这两个方向讲解。...而后置摄像头相对于竖直方向是 90°,也就说 720 相对于是摄像头来说是它高度,1280 是它宽度,这跟我们想要设置刚好相反。

    2K31

    Android13 Camera New Feature--Mirror support

    从Android13开始,Android支持为每个摄像头输出流设置镜像。...There is no mirroring for rear-facing and external cameras.基于摄像头朝向自动镜像此模式是摄像头默认镜像模式,该模式下:对于前置摄像头做水平镜像...in AUTO mode for front facing camera.相机输出做水平镜像,与前置摄像头在自动模式下行为相同 MIRROR_MODE_NONE无镜像模式 1 No mirror transform...It works automatically for SurfaceView and TextureView outputs. 为了提高效率,镜像效果作为变换flag应用,因此它仅在某些输出中有效。...它自动用于SurfaceView和TextureView输出 For manual use of SurfaceTexture, it is reflected in the value of SurfaceTexture.getTransformMatrix

    79120

    「Android音视频编码那点破事」第三章,使用OpenGL为Camera添加各种滤镜

    在第二章中,我们通过一个Camera SurfaceTexture纹理,把摄像头数据绘制到这个纹理上,同时TextureViewSurfaceTexture纹理通过id与第一个纹理关联起来,从而把摄像头画面直接绘制到屏幕...TextureViewSurfaceTexture纹理,也就是手机屏幕。...其实Camer SurfaceTexture也需要一个FBO,因为需要把摄像头数据缓存到这个FBO,那为什么TextureView却不需要呢,因为广义上来说,屏幕缓存就是它FBO。...,在这里可以对这个FBO做各种处理,最后TextureView从离屏FBOID读取缓存数据绘制到屏幕。   ...在前两章基础,我们已经有了Camera SurfaceTexture和TextureView SurfaceTexture,现在我们需要再加入一层离屏FBO。

    66610

    「Android音视频编码那点破事」第二章,使用TextureView渲染Camera画面

    使用它你可以很容易实现任何分辨率视频编码,无需关心摄像头预览大小。一切都如此简单。目前已迭代多个稳定版本,欢迎查阅学习和使用,如有BUG或建议,欢迎Issue。   ...,通知Render摄像头SurfaceTexture有新数据生成,可以准备进行处理了,这里是绘制到屏幕。...在这个项目中,Render是CameraPreviewPresenter管理,所以我们对上一章讲到CameraPreviewPresenter进行扩展。   ...SurfaceTexture:前面讲到TextureView提供屏幕纹理缓冲区。 ScreenTextureWrapper:屏幕纹理缓冲区环境。 width:TextureView宽度。...height:TextureView高度。

    1.2K20

    Android Camera2 学习01_API 简单描述和调用(预览、拍照、录像)

    一、涉及到关键类 CameraManager -------------- 获取连接camera情况,执行打开摄像头操作; CameraDevice...CaptureSession -------------- 发送请求后,就建立了一个会话,可以在当前建立会话切换各种请求,不需要时候可以执行关闭; 二、代码实现 下面代码是基于Google...,在onResume()时候,进行判断,如果当前TextureView 可用了,则执行打开摄像头操作,否则等待TextureView available,第一次打开是,TextureView还没创建完成...,所以会在TextureView available回调中执行打开camera操作。...对Camera操作,无非就是获取到硬件设备相关属性,比如当前挂载了哪些摄像头摄像头支持哪些分辨率等属性,这个我们需要用到CameraManager来获取; 获取到Camera相关属性后

    1.8K30

    Android流媒体开发之路二:NDK开发Android端RTMP直播推流程序

    摄像头,通过Camera2接口,获取到更新Surface,并转交给Opengl.EGL进行绘制,数据绘制到TextureViewSurfaceTexture,同时将RGB原始数据回调给Activity...关于Camera2接口获取摄像头数据,可以参考之前文章“Android流媒体开发之路一:Camera2采集摄像头原始数据并手动预览”,不同是,那篇文章里直接使用ImageReaderSurface...交叉编译 这部分也是主要工作之一,c++代码要想在Android使用,必须编译成动态库,然后让APP通过JNI来调用。...本质,Android也是linux嘛,所以跟其他嵌入式arm-linux交叉编译方式,本质是差不多,当然,前提是系统内布置好交叉编译环境。...我这里把Java层对摄像头捕获到数据以后处理逻辑代码贴一下。 1 当TextureView有效之后,开始创建工作。

    2.2K60

    Android Camera开发序列:Camera2 API 简单描述和调用(预览、拍照、录像

    一、涉及到关键类 CameraManager -------------- 获取连接camera情况,执行打开摄像头操作; CameraDevice -----------...------------ 发送请求后,就建立了一个会话,可以在当前建立会话切换各种请求,不需要时候可以执行关闭; 二、代码实现 下面代码是基于Google提供demo github.com/...这里采用TextureView来进行显示,在onResume()时候,进行判断,如果当前TextureView 可用了,则执行打开摄像头操作,否则等待TextureView available...,第一次打开是,TextureView还没创建完成,所以会在TextureView available回调中执行打开camera操作。...Camera数据显示到UI,这时就用到Surface了,我们可以这样理解,Surface是图像显示介质,Camera2 API 允许我们设置多个Surface为输出目标,比如上面我们说ImageReader

    1.8K10

    使用Camera2获取depth图像

    文章翻译自plluke"在三星S10 5G使用3D摄像头",想了解更多小伙伴可以查看英文原文 背景(双关语) “隐私模式”或背景模糊概念很好理解。...不过这种就是另一篇文章了 我们利用三星S10 5G这款手机上3D摄像头(以下简称ToF摄像头)来进行演示,相关代码都已经上传到github 什么是ToF(Time-of-Flight) ToF技术是指通过跟踪光束到达某一点所需时间来测量到达该点距离...它视场为75°,大致与S10 5G前置摄像头80°视场相匹配 Note: S10 5G(以及Note10+5G)通过Camera2 API返回两个摄像头。...这两个摄像头实际都来自同一个传感器,6.5MP摄像头只是10MP摄像头一部分。...后就可以渲染到TextureView,相机输出帧是横向方向,因此需要做一定旋转处理(具体实现可以参考github提供demo) Canvas canvas = textureView.lockCanvas

    1.2K20

    Android Camera2 API 同时使用前后摄像头预览

    不久前,我承担了从运行Android设备前后摄像头获取同步提要任务。 像往常一样,我去了Stack Overflow,然后去了GitHub,然后去了其他博客,才意识到我可能独自一人。...您可以在GitHub找到本教程示例应用程序: 如果您是Android相机新手,则android / camera-samples存储库将是一个很好起点。...随附仅涉及前置摄像头代码(对于后置摄像头类似): /** * Sets up member variables related to front camera....现在我们已经设置了前置摄像头和后置摄像头参数,现在可以将它们都打开。...它看起来似乎不知所措,但是它优点在于它可以很好地控制摄像机提要。 结论 (Conclusion) 如果您了解Camera2复杂性,他们可以弄清楚如何在策略同时使用两台摄像机。

    3.2K30

    Android 实现抖音小游戏潜艇大挑战思路详解

    《潜水艇大挑战》是抖音一款小游戏,以面部识别来驱动潜艇通过障碍物,最近特别火爆,相信很多人都玩过。 ?...TextureView提供给Camera承载preview;工具类CameraHelper主要完成以下功能: 开启相机:通过CameraManger代开摄像头 摄像头切换:切换前后置摄像头, 预览:获取...Camera提供可预览尺寸,并适配TextureView显示 人脸识别:检测人脸位置,进行TestureView坐标变换 相机硬件提供可预览尺寸与屏幕实际尺寸(即TextureView尺寸)可能不一致...,所以需要在相机初始化时,选取最合适PreviewSize,避免TextureView发生画面拉伸等异常 class CameraHelper(val mActivity: Activity, private...项目结构很清晰,用到大都是常规技术,即使是新入坑Android同学看起来也不费力。在现有基础还可以通过添加BGM、增加障碍物种类等,进一步提高游戏性。

    1K30

    Android Camera2 实现预览功能

    网上查阅相关资料后,发现 Android 5.0 及以后版本中,原有的 Camera API 已经 Camera2 API 所取代。...全新 Camera2 在 Camera 基础上进行了改造,大幅提升了 Android 系统拍照功能。...它通过以下几个类与方法来实现相机预览时工作过程: •CameraManager :摄像头管理器,主要用于检测系统摄像头、打开系统摄像头等; •CameraDevice : 用于描述系统摄像头,可用于关闭相机...、创建相机会话、发送拍照请求等; •CameraCharacteristics :用于描述摄像头所支持各种特性; •CameraCaptureSession :当程序需要预览、拍照时,都需要先通过...", e); } } 开启相机时,我们首先判断是否具备相机权限,然后调用 setUpCameraOutputs 函数对相机参数进行设置(包括指定摄像头、相机预览方向以及预览尺寸设定等),接下来调用

    1.6K20

    SurfaceView 与 TextureView 详解

    因此可以提供更高帧率,例如游戏,摄像头取景等场景就比较适合用SurfaceView来实现。 Surface是纵深排序(Z-ordered),这表明它总在自己所在窗口后面。...surfaceview变得可见时,surface创建;surfaceview隐藏前,surface销毁。 这样能节省资源。...TextureView是一个可以把内容流作为外部纹理输出在上面的View。它本身需要是一个硬件加速层。事实TextureView本身也包含了SurfaceTexture。...区别在于TextureView是在View hierachy中做绘制,因此一般它是在主线程(在Android 5.0引入渲染线程后,它是在渲染线程中做)。...与 SurfaceView 相比,TextureView 具有更出色 Alpha 版和旋转处理能力,但在视频以分层方式合成界面元素时,SurfaceView 具有性能方面的优势。

    13K60

    远程办公拒绝开摄像头辞,员工将公司告法庭,法院判公司赔偿52万元!

    大数据文摘出品 如果你居家工作时候,你公司要你打开摄像头,你会怎么办? 美国一家公司员工遇到了这样情况,就选择了拒绝。 该员工随后已【拒绝工作】和【不服从命令】理由解雇。...这个消息在Reddit也引发了很多讨论,有个贴就表示,“如果你需要一个摄像头随时监视你员工,你可能不是一个好经理。” 每天监视9个小时,这谁受得了?...这就是为什么我摄像头没有打开。你们已经可以在我笔记本电脑监控所有活动了,我已经分享我屏幕了。”...因此,三天之后8月26日,他因“拒绝工作”和“不服从命令”理由公司立即解雇,没有任何通知,并且还在解雇合同里加了一个竞业协议。 方法如此简单粗暴,让这名员工直接破防,一纸诉状将公司告法庭。...他声称,解雇是不合法,要求开启他网络摄像头是不合理,并违反了数据隐私规则。 法院同意解雇合同在法律是无效。“雇主没有明确说明解雇原因。

    67110

    Android Camera1详解

    Camera API1: Android 4.4 以及更低版本设备应用级相机框架,通过 android.hardware.Camera 类提供功能接口; Camera API2: Android...支持是一个渐进式过程,所以淘汰周期是比较长,在很多高版本中使用Camera API1情况也是很常见 相对于Camera2API,Camera1使用流程没有那么多状态回调和更多精细控制接口...:required="true" /> 二、获取摄像头信息 现在市场上手机摄像头是越来越多,在使用前我们首先需要获取设备支持多少摄像头,每个Camera id是前置还是后置,或者是广角,微距镜头等。...当然摄像头虽然多,但是如果手机厂商不向第三方开放的话,第三方开发者获取到也就是基本摄像头信息,比如只有前后置,或者只有后置摄像头等,获取Android设备中摄像头个数,通过调用接口: /** *...(surfaceHolder); // TextureView & GLSurfaceView camera.setPreviewTexture(surfaceTexture); 考虑到Sensor出预览数据并不一定就是自然方向

    2.9K30
    领券