使用camera2 api在前置摄像头中进行全屏视频录制

2024-02-01

我已经被这个问题困扰好几天了。

我在 Kotlin 中遵循了 Android 的官方相机示例:android 的相机示例 https://github.com/android/camera-samples/tree/master/Camera2VideoKotlin

我在github上提出了一个问题issue https://github.com/android/camera-samples/issues/1682020年2月11日,但尚未收到任何反馈。

我的问题是:

我按原样使用了示例,仅进行了更改val cameraId = manager.cameraIdList[0] to val cameraId = manager.cameraIdList[1]用于前置摄像头。 注意:后置摄像头不会发生这种情况。

前置摄像头不工作并显示黑条 测试设备:

  • 模拟器:Pixel C API 29
  • 设备:Galaxy Tab S2
  • 模式:肖像

我想要全屏视图,所以当我不设置宽高比时AutoTextureView在下面的注释行中,视频全屏显示,但现在已拉伸。

if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
  //I only have portrait mode
} else {
  //textureView.setAspectRatio(previewSize.height, previewSize.width)
} 

有没有办法设置全屏模式而不进行任何拉伸或以正确的宽高比?

我已经在松弛中经历了以下解决方案,但没有一个对我有用:

摄像头 2:无法全屏录制视频? https://stackoverflow.com/questions/37441252/camera-2-unable-to-record-video-in-full-screen

Camera2 API 使预览填充整个视图 https://stackoverflow.com/questions/41790052/camera2-api-make-preview-fill-entire-view

Android Camera2 API 拉伸预览 https://stackoverflow.com/questions/41752733/android-camera2-api-stretching-the-preview/44324039#44324039


工作了几天后。Camera2全屏预览和图像捕捉 https://stackoverflow.com/questions/41985926/camera2-full-screen-preview-and-image-capture帮助我解决了问题。

Setting onMeasure in AutoFitTextureView as:

override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec)
    val width = View.MeasureSpec.getSize(widthMeasureSpec)
    val height = View.MeasureSpec.getSize(heightMeasureSpec)
    if (ratioWidth == 0 || ratioHeight == 0) {
        setMeasuredDimension(width, height)
    } else {
        if (width > ((height * ratioWidth) / ratioHeight)) {
            setMeasuredDimension(width, (width * ratioHeight) / ratioWidth)
        } else {
            setMeasuredDimension((height * ratioWidth) / ratioHeight, height)
        }
    }
}

上面的代码使屏幕全尺寸但有预览问题 处于中心

所以我翻译如下configureTransform(viewWidth: Int, viewHeight: Int)

   // adjust the x and y to centre the preview
   val screenWidth = resources.displayMetrics.widthPixels
   val xShift = (viewWidth - screenWidth)/2

   val screenHeight = resources.displayMetrics.heightPixels
   val yShift = (viewHeight - screenHeight)/2
   matrix.setTranslate(-xShift.toFloat(), -yShift.toFloat())

   textureView.setTransform(matrix)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用camera2 api在前置摄像头中进行全屏视频录制 的相关文章

随机推荐

  • 可以从纯虚函数返回引用吗?

    class I public virtual std wstring const GetName const 0 通常 实现此接口的客户端将其名称包含在其主体中 一切都很好 但有时 GetName 的结果是在函数执行期间计算的 使用静态变量
  • Angular2 中使用 [attr.attributeName] 和 [attributeName] 绑定属性之间的区别

    我是 Angular2 的新手 当 iam 绑定属性时 我通常按以下方式进行操作 示例1
  • 如何以编程方式判断系统是 R/3 还是 S/4

    是否可以通过代码判断当前系统是R 3还是S 4 我需要它 因为我有一个返回人力资源相关数据的软件组件的方法 但这个组件应该与R 3和S 4系统不同 DATA lv software component mo configuration gt
  • 如何解决 ASP.NET Web API 中的连接超时过期问题?

    我使用 ASP NET Web API 从数据库中检索大量数据作为 json 数据列表 但在浏览器控制台中收到此错误 Failed to load resource the server responded with a status of
  • 以编程方式更改数据库连接

    在 Oracle SQL Developer 中 我需要手动切换活动数据库连接 假设登录凭据已保存 是否有一个命令可以以编程方式连接到不同的数据库 我试图避免单击窗口右上角的下拉菜单来选择活动连接 也许我应该宁愿每个数据库有一个 SQL 文
  • 使用PHPUnit测试cookie和session,如何?

    使用 PHPUnit 可以很容易地测试原始 PHP 代码 但是严重依赖 cookie 的代码又如何呢 会议可能是一个很好的例子 有没有不需要我设置的方法 COOKIE测试期间的数据 这感觉像是一种很古怪的做事方式 这是代码的常见问题 尤其是
  • 如何用Scrapy爬取整个网站?

    我无法抓取整个网站 Scrapy 只能抓取表面 我想抓取得更深 过去 5 6 个小时一直在谷歌搜索 但没有任何帮助 我的代码如下 from scrapy contrib spiders import CrawlSpider Rule fro
  • 如何从Struts1中的url中删除'.do'前缀?

    我在 Struts 1 框架中编写了一个 Web 应用程序 一切正常 但在表单提交时 当用户转发到显示的下一页 URL 时actionname do 我不希望 URL 上有这个 Struts 1 默认后缀 相反 我想在 URL 中看到页面的
  • 横向打印图像?

    我正在将控件转换为位图并打印它 using MemoryStream ms new MemoryStream chart1 SaveImage ms ChartImageFormat Bmp Bitmap bm new Bitmap ms
  • Django 无法加载模块“debug_toolbar”:没有名为“debug_toolbar”的模块

    当我尝试运行该项目时 Django 由于某种原因无法加载 django debug toolbar 插件 错误消息说 web 1 ModuleNotFoundError No module named debug toolbar 这是我的设
  • Eclipse RCP 应用程序自定义工具栏

    我正在为我的 RCP 应用程序创建一个自定义工具栏 如图所示 我想要一个带有其他三个文本框的下拉框 这些基本上都是输入框并且是相互依赖的 现在 每个盒子都属于不同的类 我想将它们集中在一个类中 以便更轻松地为彼此创建侦听器 protecte
  • 在Java中为链中的变量赋值[重复]

    这个问题在这里已经有答案了 可能的重复 Java 操作顺序 在一行中使用两个赋值运算符 https stackoverflow com questions 9440844 java order of operations using two
  • 空合并运算符 - 为什么要进行强制转换?

    谁能告诉我为什么以下语句中的第一个语句会引发编译错误而第二个语句不会 NewDatabase AddInParameter NewCommand SomeString DbType String SomeString DBNull Valu
  • 使用 Symfony 2 将数组保存在 SQL 数据库中,Doctrine?

    我正在做应用程序 我使用 SQL 并且我想将复选框值保存在一列中 我正在这样做 Assert NotBlank message please select Assert NotNull message please select Asser
  • Scala 3:类型化元组压缩

    我正在尝试将元组压缩在一起并使用匹配类型来获取生成的压缩的确切类型 我有一个匹配类型和功能 type Z A lt Tuple B lt Tuple lt Tuple A B match case EmptyTuple EmptyTuple
  • 如何使用 Spring Security 为 client_credentials 工作流程向 Feign 客户端提供 OAuth2 令牌

    Overview 我正在尝试编写一个访问公共 REST API 的程序 为了让我能够使用它 我需要提供 OAuth2 令牌 我的应用程序使用 Spring Boot 2 4 2 和 Spring Cloud 版本 2020 0 1 应用程序
  • 从设置弃用中获取随机数

    我正在尝试从一组唯一用户中获取随机的 n 个用户 这是我到目前为止所拥有的 users set random users random sample users num of user 这很有效 但它给了我一个已弃用的警告 我应该用什么来代
  • Xcode 无法推送文件,因为“与服务的通信已中断”

    我一直在尝试将我的项目从 xcode 推送到 github 但它不断给我一条错误消息 表明与服务的通信已中断 以前的提交和推送都有效 但现在坏了 我已经尝试过重新启动计算机和 Xcode 但仍然无法正常工作 我正在尝试用一些视频文件在这里推
  • 色轮背后的算法是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在我的 iPhone 应用程序上绘制色轮 该怎么做 色轮背后的算法是什么 谢谢 如果您熟悉 HSA 颜色系统 算法会很简单 色轮描
  • 使用camera2 api在前置摄像头中进行全屏视频录制

    我已经被这个问题困扰好几天了 我在 Kotlin 中遵循了 Android 的官方相机示例 android 的相机示例 https github com android camera samples tree master Camera2V