首页
学习
活动
专区
工具
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.2K50

Android平台如何采集摄像头数据并实现低延迟RTMP推送

远程监控家庭监控:将带有摄像头的 Android 设备放置在家中合适的位置,通过 RTMP 推流将摄像头采集到的视频数据传输到远程的服务器或手机端,用户可以随时随地通过网络查看家中的实时情况,保障家庭安全...企业监控:在企业办公场所、生产车间等区域安装 Android 摄像头设备,利用 RTMP 推流技术将监控画面实时推送到管理中心或相关负责人的终端设备上,方便企业进行远程管理和监控,及时发现问题并采取措施...同时,它的延迟也相对较低,使得拍摄的画面能够更及时地显示在屏幕上,对于需要实时反馈的场景,如视频通话、直播等非常关键,可以提供更好的用户体验。...兼容性更好统一的接口:Camera2 为不同厂商的摄像头硬件提供了一个统一的编程接口,使得开发者可以使用相同的代码来操作不同设备上的摄像头,大大降低了开发的难度和工作量。...向后兼容性:虽然 Camera2 是在 Android 5.0(API 21)及以上版本引入的,但它在设计上考虑了向后兼容性。

16410
  • 他们试图改变被摄像头监控的城市生活

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

    58730

    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

    81420

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

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

    67710

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

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

    1.3K20

    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进行绘制,数据被绘制到TextureView的SurfaceTexture上,同时将RGB原始数据回调给Activity...关于Camera2接口获取摄像头数据,可以参考之前的文章“Android流媒体开发之路一:Camera2采集摄像头原始数据并手动预览”,不同的是,那篇文章里直接使用ImageReader的Surface...交叉编译 这部分也是主要工作之一,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.9K10

    使用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.3K30

    SurfaceView 与 TextureView 详解

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

    13.6K60

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

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

    68110

    Android Camera1详解

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

    3K30

    被标记为事务的方法互相调用的坑(上)

    相信大家一定用过Spring中的注解型事务,配合上Spring Boot,只需要在方法上打一个@Transactional 就可以完成,真香。...但是如果大家对其中的机制一知半解的话,可能一不小心就会掉进坑,然后久久无法爬出来。 下面我就分享下 被标记为事务的方法互相调用的坑。 如果想学习Java工程化、高性能及分布式、深入浅出。...让我们再回到第一个例子,为了让大家看的清楚一点,我再贴上insertCodeBear被调用的代码: @RestController@RequestMapping("/CodeBear")public class...通过两个例子,可以得到一个结论:只有调用代理对象的方法才能被拦截,所以 在方法A中直接调用方法B,方法B是不会被拦截的。...这也就是为什么insertCodeMonkey的事务没有被开启的原因了,因为insertCodeMonkey方法是insertCodeBear直接调用的。 那么,这个问题该如何解决呢?

    70010
    领券