HiSilicon352 android9.0 开机视频调试分析

2024-02-03 09:52

本文主要是介绍HiSilicon352 android9.0 开机视频调试分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一,开机视频概念

开机广告是在系统开机后实现播放视频功能。
海思Android解决方案在原生Android基础上,增加了开机视频模块,可在开机过程中播放视频文件,使用户更好的体验系统开机过程。


二,模块结构

1. 海思自研开机视频代码路径;

vendor/hisilicon/modules/hibootvideo

2. Android原生bootanimation代码路径:

frameworks/base/cmds/bootanimation

模块层次结构如下所示,开机视频先从media.player服务中获取IMediaPlayer播放 器进行媒体文件的播放。播放开机广告视频期间的音量调节在hiBootvideoInput 中完成,并存储实时音量到service.bootvideo.volume中,在视频播放完毕后通过
AudioService统一刷新该音量至全局音量,播放开机广告视频期间的音量条显
示、静音显示、倒计时显示在HiBootvideoUI中完成,在视频播放完毕后释放。
在这里插入图片描述

3. 模块间依赖说明:

● 开机视频播放结束后可通过属性init.svc.bootvideo来判断,并销毁Window,释放用
于绘制图形的surface,在进入HiTvLancher时DTV/ATV端子源才能进行创建
Window并切源。
● 开机视频播放过程中设置的音量会存放在service.bootvideo.volume中,视频播放
完后,AudioService将service.bootvideo.volume刷新至全局音量。
● 开机视频播放过程中倒计时显示开关通过配置文件/product/etc/hi_boot_video_config.xml中的属性isEnableCountDown为true打开,中英文显示切换通过配置language="ch"表示中文显示,language="en"表示英文显示。倒计时显示背景图片可以推送到atv/bootvideo/countdown.png替换。


三, 功能

在这里插入图片描述

默认开机视频播放流程:Kernel启动后播放单板/data/local/bootvideo.mp4 视频文
件,可通过判断属性init.svc.bootvideo判断是否播放完成,播放完成后进入lancher
界面。


四,开发指引

开机视频相关配置文件如下:

1. 功能性配置文件

文件路径:/vendor/hisilicon/modules/hibootvideo/config.xml
配置项配置项含义
path1和strpath1媒体文件路径(因为权限问题,建议放在/data/local/目录)
videoLimit视频播放最大长度

2. 视频文件路径

device/hisilicon/bigfish/prebuilts/bootvideo.mp4

3. 音量调节背景图片路径

device/hisilicon/bigfish/prebuilts/mute.png
device/hisilicon/bigfish/prebuilts/panel.png

4. 视频文件路径配置文件

device/hisilicon/bigfish/prebuilts/Android.mk

5. 相关property配置文件

device/hisilicon/Hi3751V350/device_property.mk
Property含义
prop.service.bootop.type开机业务类型(bootvideo表示开机视频、bootanim表示开机动画、quickplay表示端子播放)三者配置互斥,同时只能选择一个配置场景
service.bootvideo.volume暂存音量值
init.svc.bootvideo开机视频播放结束标志

6. 单板上存放视频文件路径

开机视频data/local/bootvideo.mp4

7. 单板上存放动画文件路径

product/media/bootanimation.zip

注:开机视频文件全称应为bootvideo.mp4,
并放置到如上的指定目录下,其中bootanimation.zip应使用存储方式压缩生成


五,调试指引

1. 开机视频未起播

1> 通过在init.xxxx.rc中添加开机启动log服务,开机后导出log,搜索关键字
bootvideo进行分析。

例如:service get_log /system/bin/logcat -f/data/local/tmp/log.txt
class main
oneshot

2> 检查配置文件prop.service.bootop.type=bootvideo是否满足,检查单板data/ local/bootvideo.mp4文件是否存在,视频文件是否受损。

2. 开机视频播放完黑屏

1> 检查开机视频文件最后一帧是否为黑帧。
2> 检查BootVideo进程是否退出,若退出后,而此时Lancher未启动会导致黑屏。
3> 检查开机视频时长LOCAL_BOOT_VIDEO_LIMIT配置是否合理。
4> 检查静帧配置LOCAL_SUPPORT_LAST_FRAME是否打开。

3. 开机视频音量跳变

1> 通过 logcat | grep HiMW@ 查看MW音量设置情况,找到设置音量的进程。
2> 通过 logcat | grep -i audio 抓取串口日志,检查AudioService和AudioPolicyManager设置音量的时机。

这篇关于HiSilicon352 android9.0 开机视频调试分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/673782

相关文章

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java