video 视频编解码一些debug方法

文章目录

  • 一、通过命令去获取一些数据
    • 1.2 确定我们xml配置文件:
  • 二、查看我们芯片支持的编码能力
  • 三、通过log去获取信息

这个文章的主要内容是为了后期性能方面的debug, 设计到前期的bringup则没有

一、通过命令去获取一些数据

获取媒体相关的参数:

#   getprop | grep media

获取后如下所示:

[audio.deep_buffer.media]: [true]
[init.svc.media]: [running]
[init.svc.media.swcodec]: [running]
[init.svc.mediadrm]: [running]
[init.svc.mediaextractor]: [running]
[init.svc.mediametrics]: [running]
[init.svc.qti-media]: [stopped]
[init.svc.vendor-qti-media-c2-hal-1-0]: [running]
[init.svc.vendor-qti-media-c2audio-hal-1-0]: [running]
[init.svc.vendor.media.omx]: [running]
[init.svc_debug_pid.media]: [2006]
[init.svc_debug_pid.media.swcodec]: [2092]
[init.svc_debug_pid.mediaextractor]: [2000]
[init.svc_debug_pid.mediametrics]: [2003]
[init.svc_debug_pid.qti-media]: []
[init.svc_debug_pid.vendor-qti-media-c2-hal-1-0]: [1487]
[init.svc_debug_pid.vendor-qti-media-c2audio-hal-1-0]: [1488]
[init.svc_debug_pid.vendor.media.omx]: [2032]
[media.aac_51_output_enabled]: [true]
[media.settings.xml]: [/vendor/etc/media_profiles_vendor.xml]
[media.stagefright.audio.deep]: [false]
[media.stagefright.enable-aac]: [true]
[media.stagefright.enable-fma2dp]: [true]
[media.stagefright.enable-http]: [true]
[media.stagefright.enable-player]: [true]
[media.stagefright.enable-qcp]: [true]
[media.stagefright.enable-scan]: [true]
[media.stagefright.thumbnail.prefer_hw_codecs]: [true]
[ro.boottime.media]: [17647882232]
[ro.boottime.media.swcodec]: [17719764680]
[ro.boottime.mediaextractor]: [17644505982]
[ro.boottime.mediametrics]: [17646084784]
[ro.boottime.qti-media]: [14864513588]
[ro.boottime.vendor-qti-media-c2-hal-1-0]: [17003630982]
[ro.boottime.vendor-qti-media-c2audio-hal-1-0]: [17006300149]
[ro.boottime.vendor.media.omx]: [17663434732]
[ro.media.recorder-max-base-layer-fps]: [60]
[ro.media.xml_variant.codecs]: [_kalama]
[ro.media.xml_variant.codecs_performance]: [_kalama]
[ro.mediaserver.64b.enable]: [true]
[vendor.display.enable_latch_media_content]: [1]
[vendor.media.system.build_codename]: [13]
[vendor.media.target_variant]: [_kalama]

这里我们就大致能看到:

[ro.media.xml_variant.codecs]: [_kalama]
[ro.media.xml_variant.codecs_performance]: [_kalama]

这两个文件,我们可以看到名字 和我们对应的配置xml文件是有关联的 。

1.2 确定我们xml配置文件:

#  adb logcat -b all | grep -Ei "getVendorXmlPath"
05-12 09:25:36.226 13255 13314 I MediaCodecsXmlParser: getVendorXmlPath /vendor/etc/media_codecs_kalama_vendor.xml
05-12 09:25:36.228 13255 13314 I MediaCodecsXmlParser: getVendorXmlPath /vendor/etc/media_codecs_performance_kalama_vendor.xml

这个Log在开机的时候会打印一次,然后就会把这个log冲掉,所以有时候我们没有看到这个log也是正常的,
我们可以通过重启相关的服务来重新获取一次

# adb shell kalama:/ # pkill -9 media*

通过杀死这些相关的服务,后台会默认重启这个时候我们就能看到了。
qcom的xml一般会在后面多一个vendor,所以我们看到的就是 media_codecs_kalama_vendor.xml
其中这个 _kalama 就是我们上面获取的 [ro.media.xml_variant.codecs] 的名字。

二、查看我们芯片支持的编码能力

# adb  shell dumpsys media.playerMedia type 'audio/3gpp':Decoder "c2.android.amrnb.decoder" supportsxxxxxxxMedia type 'video/avc':Decoder "c2.android.avc.decoder" supportsxxxxxxxMedia type 'video/avc':Decoder "c2.qti.avc.decoder" supportsxxxxxxx

从这里面我们就能看到相关的支持, 一般来说 格式都是 c2.android.xxxxx .decoder这种
c2代表框架,可能是 omx (android12之前的框架)也可能是 c2(codec2框架 android13及其以上)
Android 代表google的原生代码, 这种基本都是软件编码,性能很差的,而不同的平台这里会有不同的名字,比如高通就是 qti.
Xxxxx 是h264、 h265、video、 audio, 不同的文件格式有不同的名字, video h264就是 avc. Video H265就是 hevc 其余的大家可以去查查
decoder代表的就是解码器。 encoder就是编码器。

三、通过log去获取信息

平台为了保证性能,一般不会打开相关的log,我们可以通过对应的debug手册去获取如何打开这些debug方案;

如高通qsc8550平台:
在这里插入图片描述

如果是走的我们需要的硬编码,log会如下所示:

D CCodecBufferChannel: [c2.qti.avc.encoder#157] 
// c2.qti.avc.encoder qti代表的是高通的硬件编码器D CCodecBufferChannel: [c2.android.avc.encoder#157] 
// android.avc.encoder 代表的是原生google的软件编码逻辑

硬件编码的log大致如下图
在这里插入图片描述
软件编码我们基本不会使用。所以我这边暂时没有相关的 log。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Thinkphp6 配置并使用redis图文详解 小皮面板

这篇文章主要介绍了Thinkphp6 配置并使用redis的方法,结合实例形式详细分析了Redis的安装、配置以及thinkphp6操作Redis的基本技巧,需要的朋友可以参考下 一、安装redis ThinkPHP内置支持的缓存类型包括file、memcache、wincache、sqlite。ThinkPHP默认使用自带的采用think\Ca…

SpringMVC之自定义注解

目录 一.什么是Java注解 1.简介 2.注解的分类 3.JDK元注解 二.自定义注解 1.自定义注解的分类 1.1.标记Annotation: 1.2.元数据Annotation: 2.如何使用自定义注解 3.案例演示 3.1 获取类、方法及属性上的注解值 3.2Inherited 的使用 3.3获取类属性上的注解属性值 3.…

springboot整合mybatis

一、项目结构展示 二、开始整合 1、引入pom依赖 进入Maven中央仓库选择自己所需要的依赖&#xff0c;maven仓库地址&#xff1a;Maven Central 完整Maven依赖如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"h…

markdown工具Atom预览与插件安装

​atom是以命令行作为插件选项的入口 打开命令输入框 Windows: ctrl shift p Mac: command shift p 输入命令安装 输入 markdown preview toggle &#xff0c;可以偷懒只输入mdpt(模糊匹配) 按enter键即可看到预览&#xff0c;如图&#xff0c;左边编辑&#xff0c;右…

Vue中的过滤器 Filters

过滤器 Filters 过滤器一般用于格式化文本内容&#xff0c;通常可以在两个地方使用&#xff0c;主要是模板语法、以及 v-bind 表达式中。例如我想对展示的文本进行一些特殊处理&#xff0c;将金额进行四舍五入后再展示。选项 filters 内可以编写多个自定义过滤器。 用法&…

LightDB 23.3 通过GUC参数控制commit fetch

背景 commit游标提交之后&#xff0c;可以继续使用fetch进行结果集的操作。commit和fetch结合使用功能开发时不考虑分布式。后续&#xff0c;又对分布式进行了测试&#xff0c;发现持有portal后&#xff0c;代码中会对querydesc进行非空判断。当querydesc为空时&#xff0c;Li…

工业交换机常见的硬件故障有哪些?

工业交换机常见的硬件故障主要是由于受到供电电源、室内温度、室内湿度、电磁干扰、静电等机房环境的影响&#xff0c;造成工业交换机电源、背板、模块、端口等部件出现故障。具体可以分为以下几类。 1.电力供应故障&#xff1a; 由于外部供电不稳定、电源线路老化或雷击等原因…

LiveNVR监控流媒体Onvif/RTSP功能-支持海康摄像头海康NVR通过EHOME协议ISUP协议接入分发视频流或是转GB28181

LiveNVR支持海康NVR摄像头通EHOME接入ISUP接入LiveNVR分发视频流或是转GB28181 1、海康 ISUP 接入配置2、海康设备接入2.1、海康EHOME接入配置示例2.2、海康ISUP接入配置示例 3、通道配置3.1、直播流接入类型 海康ISUP3.2、海康 ISUP 设备ID3.3、启用保存3.4、接入成功 4、相关…

亚马逊封买家账号的原因有哪些

亚马逊可能封锁买家账号的原因有多种&#xff0c;主要是出于保护市场和维护平台秩序的考虑。以下是一些可能导致亚马逊封锁买家账号的常见原因&#xff1a; 1、涉及违规行为&#xff1a;如果买家违反了亚马逊的使用政策&#xff0c;如发表虚假评价、滥用退货政策、欺诈或盗窃等…

【视觉SLAM入门】7.3.后端优化 基于KF/EKF和基于BA图优化的后端,推导及举例分析

"时间倾诉我的故事" 1. 理论推导2. 主流解法3. 用EKF估计状态3.1. 基于EKF代表解法的感悟 4. 用BA法估计状态4.1 构建最小二乘问题4.2 求解BA推导4.3 H的稀疏结构4.4 根据H稀疏性求解4.5 鲁棒核函数4.6 编程注意 5.总结 引入&#xff1a; 前端里程计能给出一个短时间…

markdown学习笔记

markdown学习笔记 1.文字&#xff08;依靠HTML&#xff09; 1.1文字缩进-空格转义符 单字符空&#xff1a;&emsp; 半字符空&#xff1a;&ensp;1.2文字对齐 「居中&#xff1a;」<center> 居中 </center> or <p align"center"> 居中 …

吃瓜教程第一二章学习记录

当大多数人听到 "机器学习 "时&#xff0c;他们会联想到机器人&#xff1a;一个可靠的管家或一个致命的终结者&#xff0c;这取决于你问谁。但是&#xff0c;机器学习并不只是未来主义的幻想&#xff0c;它已经存在了。事实上&#xff0c;在一些特殊的应用中&#xf…

upload-labs文件上传漏洞通关

一、环境搭建 upload-labs是一个使用php语言编写的&#xff0c;专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。 下载地址&#xff1a;https://github.com/c0ny1/upload-labs/releases 在 win 环境下 直接解压到phpstudy下即可 二、通关 &#xff08;一&#xff09;16关…

使用凌鲨进行聚合搜索

作为研发人员&#xff0c;我们经常需要在多个来源之间查找信息&#xff0c;以便进行研发工作。除了常用的搜索引擎如百度和必应之外&#xff0c;我们还需要查阅各种代码文档和依赖包等资源。这些资源通常分散在各个网站和文档库中&#xff0c;需要花费一定的时间和精力才能找到…

Redis缓存更新策略、详解并发条件下数据库与缓存的一致性问题以及消息队列解决方案

0、前言 我们知道&#xff0c;缓存由于在内存中&#xff0c;数据处理速度比直接操作数据库要快很多&#xff0c;因此常常将数据先读到缓存中&#xff0c;再进行查询、更新等操作。 但与之而来的问题就是&#xff0c;内存中的数据不仅没有持久化&#xff0c;而且需要保证…

如何在微软Edge浏览器上一键观看高清视频?

编者按&#xff1a;视频是当下最流行的媒体形式之一。但由于视频压缩、网络不稳定等原因&#xff0c;我们常常可以看到互联网上的很多视频其画面质量并不理想&#xff0c;尤其是在浏览器端&#xff0c;这极大地影响了观看体验。不过&#xff0c;近期微软 Edge 浏览器推出了一项…

linux命令查看谁在使用服务器的GPU

命令&#xff1a;查看GPU使用情况 nvidia-smi 可以知悉GPU占用情况和主要使用GPU的进程&#xff0c;如下图所示&#xff1a; 实时查看gpu使用&#xff1a; nvidia-smi -l 1 表示每隔1s刷新一下&#xff0c;数字可更改。 查看进程的归属者 方法一&#xff1a;ps -f -p pid…

发布文章到wordpress

给朋友新建的wp网站,没有内容怎么办,总不能一篇篇的挨个写入吧。用wp提供的录入模块就可以了 参考 wp说明文档 获取docx内容保存到wp 资料有个docx文件,但文件格式混乱,好在有目录,可以基于目录,对文章分割,用正则拆分存入wp 首先用pandoc把docx转为md文件,速度较慢,…

——二叉树

二叉树种类 二叉树有两种主要的形式&#xff1a;满二叉树和完全二叉树。 满二叉树 如果一棵二叉树只有度为0的结点和度为2的结点&#xff0c;并且度为0的结点在同一层上&#xff0c;则这棵二叉树为满二叉树。 完全二叉树 在完全二叉树中&#xff0c;除了最底层节点可能没…

开发者必看!NetMarvel 五大能力驱动【变现收益】增长飞轮

更多流量带来更多预算&#xff0c;再由更多预算驱动增长。这不仅是出海App增长变现的底层逻辑&#xff0c;也是程序化广告平台的运行法则。App出海之路走到今天&#xff0c;开发者已经意识到&#xff1a;应用内购是实现正向现金流的必要手段&#xff0c;接入广告平台获取广告收…