找回密码
 立即注册
搜索
热搜: 星闪 最新 活动
查看: 171|回复: 0

[Hi3751v352] 开机视频实现

[复制链接]

20

主题

0

回帖

180

积分

超级版主

积分
180
发表于 2025-12-10 13:55:27 | 显示全部楼层 |阅读模式
本帖最后由 xusheng 于 2025-12-10 19:57 编辑

【运行环境】
硬件:Hi3751v352 ;软件:Android 9 SDK

【问题描述】
按文档描述无法实现开机视频。

【问题分析】
开机视频播放流程图如下,可见在显示开机Logo后,根据prop.service.bootop.type属性,选择播放开机动画还是开机视频。
相关文档描述摘录:
  • 默认开机视频播放流程:Kernel启动后播放单板/data/local/bootvideo.mp4
  • 开机视频相关配置文件:vendor/hisilicon/modules/hibootvideo/config.xml
  • 相关property配置文件:device/hisilicon/bigfish/Hi3751 V350/device_property.mk

【修改过程】

1. 文档描述的配置文件和开机视频存放位置 与 SDK 不一致。


2. 配置文件位置:device/hisilicon/bigfish/prebuilts/config.xml
  1. <?xml version='1.0'?>
  2. <config>
  3.   <bootvideo>
  4.     <property key="path1" value="<font color="#ff0000">/data/local/data/bootvideo.mp4</font>"/>
  5.     <property key="path2" value="/data/local/data/bootvideosnd.mp4"/>
  6.     <property key="strPath1" value="/data/local/data/strbootvideo.mp4"/>
  7.     <property key="strPath2" value="/data/local/data/strbootvideosnd.mp4"/>
  8.     <property key="isEnableInput" enable="true"/>
  9.     <property key="isEnableUI" enable="true">
  10.       <property key="isEnableCountDown" enable="true" language="en"/>
  11.       <property key="isEnableVolumeBar" enable="true"/>
  12.       <property key="isEnableVolumeMute" enable="true"/>
  13.     </property>
  14.   </bootvideo>
  15. </config>
复制代码



3. 将开机视频放入单板/data/local/data 目录,重启,仍显示为开机动画。检查相关属性,发现值不为bootvideo

console:/ # getprop | grep bootop
[prop.service.bootop.type]: [bootanim]


4. 手动修改单板init.rc,强制属性值为bootvideo,重启后没有生效,发现值仍为bootanim

on early-init
    # Set init and its forked children's oom_adj.
    write /proc/1/oom_score_adj -1000
    ....
    start ueventd
    setprop prop.service.bootop.type bootvideo

5. 修改文件device/hisilicon/Hi3751V350/device_property.mk,重新编译
  1. PRODUCT_PROPERTY_OVERRIDES += \
  2.   ro.prop.bootanim.path=/atv/bootvideo/bootanimation.zip \
  3.   service.bootvideo.volume=-1 \
  4.   prop.atv.init=false \
  5.   prop.dtv.init=false \
  6.   <font color="#ff0000">prop.service.bootop.type=bootvideo</font> \
  7.   persist.service.strbootop.type=none \
  8.   persist.prop.dfx.enable=true \
  9.   persist.prop.xbug.enable=false
复制代码
$ make exe4fs -j32

将生成后的system.ext4 和 vendor.ext4 烧录到单板,再将bootvideo.mp4放入/data/local/data/ 目录中,重新复位,则可正常显示开机视频。


【背景知识】


1. Android 属性
PRODUCT_PROPERTY_OVERRIDES 是一个 Makefile 变量,用于定义一系列键值对形式的系统属性。android默认属性会在构建系统镜像(如 system.img)时被处理并写入到 /system/build.prop 文件中。

Android 8.0 引入 Project Treble 后,将系统划分为:
  • System 分区:AOSP 通用代码(Google 控制)
  • Vendor 分区:SoC 和设备厂商私有实现(厂商控制)

Android 10+:引入 /product、/system_ext 等更多分区,属性来源更分散。

2. 属性加载流程
  • 内核 cmdline                         如androidboot.*参数,通过/proc/cmdline读取,由init转为ro.boot.*属性
  • /system/build.prop                       AOSP 默认属性
  • /vendor/build.prop                 厂商属性
  • /product/build.prop                产品级属性(Android 10+)
  • init.rc 及其包含的 .rc 文件      通过setprop命令或on property:触发逻辑
  • 运行时 setprop                       shell 或 native 代码动态设置(非ro.属性)

build.prop 是在 init 初始化早期通过代码(property_load_boot_defaults())加载的;而 init.rc 是在 init 解析 rc 文件阶段执行的,时间上晚于 build.prop 的加载。


3. 为何在init.rc 中设置属性值为bootvideo,并没有起作用?
prop.service.bootop.type 是一个系统保留的属性,且在应用中会进行相关操作,其值只能在build.prop或更早阶段设定,不能在init.rc中动态修改。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|【淇诺科技】技术论坛 ( 粤ICP备14010465号-1|粤ICP备14010465号-1 )

GMT+8, 2026-4-2 17:31 , Processed in 0.188314 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表