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设置音量的时机。

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

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

相关文章

MySQL的ACID、死锁、MVCC问题

1 ACID ACID代表原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。一个确保数据安全的事务处理系统,必须满足这些密切相关的标准。 原…

spring boot学习第九篇:操作mongo的集合和集合中的数据

1、安装好了Mongodb 参考&#xff1a;ubuntu安装mongod、配置用户访问、添删改查-CSDN博客 2、pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns…

MATLAB绘制电磁场

MATLAB绘制电磁场举例: clc;close all;clear all;warning off;%清除变量 rand(seed, 100); randn(seed, 100); format long g; m12 for k1:m for j1:m if k1 V(j,k)1; elseif((j1)|(jm)|(km)) V(j,k)0; else …

【MySQL】深入理解隔离性

深入理解隔离性 一、数据库并发的场景二、多版本并发控制&#xff08; MVCC &#xff09;三、三个前提知识1、3个记录隐藏字段2、undo日志 四、快照的概念五、Read View六、隔离级别RR与RC的本质区别 一、数据库并发的场景 数据库并发的场景总共有三种&#xff1a; 读-读&…

PPT录屏功能在哪?一键快速找到它!

在现代办公环境中&#xff0c;ppt的录屏功能日益受到关注&#xff0c;它不仅能帮助我们记录演示文稿的播放过程&#xff0c;还能将操作过程、游戏等内容完美录制下来。可是很多人不知道ppt录屏功能在哪&#xff0c;本文将为您介绍ppt录屏的打开方法&#xff0c;以帮助读者更好地…

C++迷宫游戏详解

个人主页&#xff1a;[PingdiGuo_guo] 收录专栏&#xff1a;[C干货专栏] 大家好呀&#xff0c;我是PingdiGuo_guo&#xff0c;今天我们来学习用C实现一个迷宫游戏。 目录 1.迷宫的具体步骤 1.1.迷宫的初始化 ​编辑 1.2.寻路算法 1.DFS算法 2.BFS算法 1.3.移动 2.总结…

将http转为https访问需要费用吗

首先&#xff0c;需要了解http和https的概念的区别。 http本身是一种超文本传输协议&#xff0c;目前是互联网在进行数据访问过程中最广泛运用的一种网络协议&#xff0c;http工作于客户端与服务器端之间。浏览器作为http客户端通过URL向http服务器端发送所有请求。Web服务器则…

【MongoDB】跨库跨表查询(python版)

MongoDB跨表跨库查询 1.数据准备&#xff1a;2.跨集合查询3.跨库查询应该怎么做&#xff1f; 讲一个简单的例子&#xff0c;python连接mongodb做跨表跨库查询的正确姿势 1.数据准备&#xff1a; use order_db; db.createCollection("orders"); db.orders.insertMany…

jupyter notebook找不到自己创建的环境 无法识别 解决方法

问题描述&#xff1a; 这是最近遇到的一个关于Anaconda的小问题。 用conda创建一个名为 pytorch 的环境想学习pytorch&#xff0c;安装完一切之后在 jupyter 中找不到 pytorch 这个虚拟环境&#xff0c;与之相关的库也都无法调用 解决方法&#xff1a; 实际上是由于在虚拟环境…

【技术策划,游戏设计的新风口】

*** 技术策划&#xff0c;游戏设计的新风口 移动互联网的发展催生了游戏产业对技术策划人才的旺盛需求。最近&#xff0c;一家知名游戏公司发布技术策划招聘&#xff0c;提供35-45k的高薪聘用&#xff0c;充分展现该岗位的紧俏和吸引力。 高薪不仅带来可观的物质回报&#xff…

Blender 使用Rigify绑定做动画导入Unity的问题

导入到Unity的问题&#xff1a; 1.有多余的骨骼&#xff08;非形变骨&#xff09; 2.层级错误 这两个问题是一个问题&#xff1a; 1.第一个问题是因为有形变骨是非形变骨的子骨骼导致的&#xff0c;所以只需要把形变骨放到对应的父级形变骨下即可&#xff0c;CtrlP即可 2.第二…

亚马逊新店铺视频怎么上传?视频验证失败怎么办?——站斧浏览器

亚马逊新店铺视频怎么上传&#xff1f; 登录亚马逊卖家中心&#xff1a;首先&#xff0c;卖家需要登录亚马逊卖家中心。在登录后&#xff0c;可以点击左侧导航栏上的“库存”选项&#xff0c;然后选择“新增或管理商品”。 选择商品&#xff1a;接下来&#xff0c;在“新增或…