关于 Camera 预览和录像画质不一样的问题分析

1、问题背景
基于之前安卓平台的一个项目,客户有反馈过一个 Camera app 预览的效果,和录像效果不一致的问题。
这里的预览是指打开 Camera app 后直接出图的效果;录像的效果则是指打开 Camera app 开启录像功能,录制一段视频,再用设备自带的播放器去看录制的视频的效果。
发现录像的 效果要 比预 览的效果 锐度要高。
2、问题分析
关于这个问题,上周也有写过类似的一篇文章分析不同 app 之间画质差异的原因。有些排查过程是通用的,如下是关于这个问题的排查过程。
a、预览和录像是否走的是同一路流?分别 dump下预览和录像的 yuv 来对比看看效果。
预览出的是1080P,录像也是1080P,走的是同一路流。分别 dump了录像和预览的 yuv,对比看效果是一致的,所以就不是ISP处理之前的问题,需继续向后排查。
b、是否是显示的问题。
我这里的验证方式是用我们自己的开发板+Camera 模组来分析问题的,通过HDMI接到1080P 的显示器上出图,通过截屏比较预览的效果和录制的效果;
1>、是有发现在 同样的显示器上播放录制的视频,清晰度要比预览画面要好一些,如下图所示。
2>、 通过 上一步, 预览和录像的yuv效果是一致的,所以接着对比看了预览的yuv和预览的截屏,发现预览的yuv是要比实际的预览结果要好。
所以就怀疑是从yuv 到显示这里的什么处理,导致的清晰度损失了。后面注意到预览截屏下来是4K的分辨率,因为此Android版本的SDK是默认支持4K UI的。
所以关于预览的话, 是把1080P的数据显示在4K UI上,也就是1个实际的像素数据最后是用4个像素来显示,而录像是直接1080P显示的,所以视觉上看起来预览的清晰度度是要差一点的,是正常的。关闭4K UI后比较,预览和录像的效果是一致了。
但客户那边的设备用的是mipi 屏,UI的分辨率是1920x1200,所以并不是4K UI的预览导致的差异。
c、是否是 pq 导致的效果差异。
这里的 pq 是指  picture  quality,是指专门调屏幕画质的,也有色温、锐度、亮度的处理模块和参数的调整,和我们调 camera 画质的工作类似。
后面和客户再次确认了下问题,是在设备上播放录制的视频锐化比预览要高很多,视频导出来在PC上去播放又是正常是。 我这边就用客户的版本、客户的机器、细节颜色多的场景下,复现了下反馈问题。
确实播放录制的视频锐化强度比预览要明显很多,颜色也鲜艳了很多,但用的同样的SDK版本,在我们开发板上就没有这个问题。
这里就找到pq组的同事帮忙分析了下,在客户的设备上播放视频时,执行下指令关闭pq锐化的处理,效果就正常了很多。
接着是dump了我们开发板设备,和客户端设备的pq参数,参数对比是一样的。后面排查了我们开发板上pq的效果不生效的原因,是因为压根没有配置调用pq参数的驱动,而客户板上是支持的,所以表现有差异。
后续是将pq参数的效果文件进行了修改,bypass了锐化、亮度、颜色等的模块,所以效果就保持一致了。
而预览不受pq的影响,是因为预览走的osd层,osd层不走pq处理的这些模块。
3、问题总结
a、要理解清楚客户报的问题,用同样的设备、固件版本、拍摄环境能去复现到,才好去进一步分析。
对于这个问题,我花了太多时间,去验证我们自己开发板上 4K UI导致的预览清晰度差的问题,而客户明明反馈的是预览正常,播放录像时锐化高。
我想当然的以为播放录像锐化高,就是录像比预览清晰度高。和我们开发板上发现预览清晰度差是一个问题。
b、提出合理的假设,一步步去做验证排查,直到找到问题原因。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/92865.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

框架分析(6)-Ruby on Rails

框架分析(6)-Ruby on Rails 专栏介绍Ruby on Rails核心概念以及组件讲解MVC架构模式约定优于配置强大的ORM支持自动化测试丰富的插件生态系统RESTful路由安全性总结 优缺点优点快速开发简单易学MVC架构强大的ORM支持大量的插件和Gem支持 缺点性能问题学习…

快速学会创建uni-app项目并了解pages.json文件

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 前言 创建 uni-app 项目 通过 HBuilderX 创建 pages.json pages style globalStyle tabBar 前言…

保姆级教程:从0到1使用Stable Diffusion XL训练LoRA模型 |【人人都是算法专家】

Rocky Ding 公众号:WeThinkIn 写在前面 【人人都是算法专家】栏目专注于分享Rocky在AI行业中对业务/竞赛/研究/产品维度的思考与感悟。欢迎大家一起交流学习💪 大家好,我是Rocky。 Rocky在知乎上持续撰写Stable Diffusion XL全方位的解析文章…

Spring MVC:@RequestMapping

Spring MVC RequestMapping属性 RequestMapping RequestMapping, 是 Spring Web 应用程序中最常用的注解之一,主要用于映射 HTTP 请求 URL 与处理请求的处理器 Controller 方法上。使用 RequestMapping 注解可以方便地定义处理器 Controller 的方法来处…

服务器Linux系统配置mysql数据库主从自动备份

服务器Linux系统配置mysql数据库主从自动备份 当数据内容越来越多的时候,数据库也变得越来越大了。如果不小心误删了,或者被黑主机了,那就什么都没有了。所以数据库的数据怎么能让它不丢失做到万无一失变得尤为重要! 我是艾西&a…

【机器学习7】特征缩放

特征缩放 🍀特征缩放的重要性🌱归一化🌱标准化🌱更高级的缩放方法🌸导入数据集&将数据集划分为训练集和测试集🌸Sklearn-Learn算法实现归一化🌸Sklearn-Learn算法实现标准化 🍀特…

电商项目part05 分布式ID服务实战

背景 日常开发中,需要对系统中的各种数据使用 ID 唯一表示,比如用户 ID 对应且仅对应一个人,商品 ID 对应且仅对应一件商品,订单 ID 对应且仅对应 一个订单。现实生活中也有各种 ID,比如身份证 ID 对应且仅对应一个人…

开黑啦kook 机器人开发 PHP swoole Liunx 服务器(宝塔)

安装环境 PHP 拓展 直接使用 宝塔一键安装 (Windows系统不支持) 设置命令行的PHP版本避免执行脚本时 获取不到 swoole 检查swoole是否安装成功 获取官方SDK GitHub - kaiheila/php-bot: 开黑啦机器人的php版本https://github.com/kaiheila/php-bot 配…

【Mybatis】关联关系映射表对象之间的关系

目录 ​编辑 1.概述 ( 1 ) 介绍 2.一对一关联映射 2.1数据库表连接: 2.2配置文件: 2.3生成自动代码 2.4 编写测试 3. 一对多关联映射 4.多对多关联映射 1.概述 ( 1 ) 介绍 关联关系映射是指在数据库中,通过定义表之间的关联关系…

docker 部署服务

1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。 [rootbogon ~]# docker pull mysql:5.6 [rootbogon ~]# docker pull owncloud [rootbogon ~]# docker run -itd --name mysql --env MYSQL_ROOT_PASSWORD123456 mysql:5.6 [rootbogon ~]# docker run -itd -…

在vue项目中用vue-watermark快捷开发屏幕水印效果

我们先引入一个第三方依赖 npm install vue-watermark然后 因为这只是个测试工具 我就直接代码写 App.vue里啦 参考代码如下 <template><div><vue-watermark :text"watermarkText"></vue-watermark><!-- 正常的页面内容 --></div…

李跳跳跳过APP开屏广告,附下载地址

最近&#xff0c;李跳跳APP宣布永久停止更新。据称&#xff0c;该应用导致了消费者权益的减损&#xff0c;被指构成不正当竞争&#xff0c;并因此遭受某大厂的投诉&#xff0c;甚至收到了一封法律函件的威胁。面对压力&#xff0c;最终李跳跳APP选择了退出舞台。 李跳跳APP是什…

西北大学计算机考研844高分经验分享

西北大学计算机考研844经验分享 个人介绍 ​ 本人是西北大学22级软件工程研究生&#xff0c;考研专业课129分&#xff0c;过去一年里在各大辅导机构任职&#xff0c;辅导考研学生专业课844&#xff0c;辅导总时长达288小时&#xff0c;帮助多名学生专业课高分上岸。 前情回顾…

CSS中如何实现多行文本溢出省略号效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用text-overflow 和 overflow 属性⭐ 使用clamp() 函数⭐ 使用 JavaScript 或 CSS 框架⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到…

【滑动窗口】leetcode1004:最大连续1的个数

一.题目描述 最大连续1的个数 这道题要我们找最大连续1的个数&#xff0c;看到“连续”二字&#xff0c;我们要想到滑动窗口的方法。滑动窗口的研究对象是一个连续的区间&#xff0c;这个区间需要满足某个条件。那么本题要找的是怎样的区间呢&#xff1f;是一个通过翻转0后得到…

【无法联网】电脑wifi列表为空的解决方案

打开电脑, 发现wifi列表为空, 点击设置显示未连接 首先检查是不是网卡驱动有问题, cmd, devmgmt.msc 找到网络适配器, 看看网卡前面是否有感叹号, 如果没有则说明网卡没问题, 有问题则重装驱动 看看网络协议是否设置正确 找到"控制面板\所有控制面板项\网络和共享中心&…

matlab使用教程(25)—常微分方程(ODE)选项

1.ODE 选项摘要 解算 ODE 经常要求微调参数、调整误差容限或向求解器传递附加信息。本主题说明如何指定选项以及每个选项与哪些微分方程求解器兼容。 1.1 选项语法 使用 odeset 函数创建 options 结构体&#xff0c;然后将其作为第四个输入参数传递给求解器。例如&#xff0…

【字节跳动青训营】后端笔记整理-4 | Go框架三件套之GORM的使用

**本人是第六届字节跳动青训营&#xff08;后端组&#xff09;的成员。本文由博主本人整理自该营的日常学习实践&#xff0c;首发于稀土掘金。 我的go开发环境&#xff1a; *本地IDE&#xff1a;GoLand 2023.1.2 *go&#xff1a;1.20.6 *MySQL&#xff1a;8.0 本文介绍Go框架三…

.NET 操作 TDengine .NET ORM

TDengine 是国内比较流的时序库之一&#xff0c;支持群集并且免费&#xff0c;在.NET中资料比较少&#xff0c;这篇文章主要介绍SqlSugar ORM来操作TDengine 优点&#xff1a; 1、SqlSugar支持ADO.NET操作来实现TDengine&#xff0c;并且支持了常用的时间函数、支持联表、分…

【算法训练-双指针】最长无重复子串(数组)

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是最长无重复子串或最长无重复子数组&#xff0c;这类题目出现频率还是很高的。 最长无重复子数组 先来看看数组数据结构的题目 题干 输入&#…