Hi3751V811 开机视频实现

目的:实现 Hi3751V811 开机视频播放

硬件平台:HI3751V811DMO4A VER.C

软件环境:HiDPTAndroidV500R002C00SPC060

 

一、 概述

开机视频是在系统启动的过程中播放指定的视频文件,海思提供的Android 解决方案中就包含了开机视频播放的功能,在原生 Android 基础上,增加了开机视频模块,可在开机过程中播放视频文件。

       海思自研开机视频代码路径:device/hisilicon/bigfish/frameworks/hibootvideo

       Android 原生 bootanimation 代码路径:frameworks/base/cmds/bootanimation

默认开机视频播放流程:开机视频先调用 himediaplayer 完成播放设备的初始化,然后调用 hi_svr_player 播放单板 /data/local/data/bootvideo.mp4 视频文件。设置 third.get.bootvideo.end = 0 当视频播放超过 20s 后,静止在视频最后一帧,当收到系统 boot complete 广播消息后,退出开机视频,并设置 third.get.bootvideo.end = 1 并销毁 Window,在进入 HiTvLancher 时 DTV/ATV 端子源才能进行创建 Window 并切源。

播放开机广告视频期间的音量调节在 input 中完成,并存储实时音量到 third.bootvideo.volumeindex 中,在视频播放完毕后通过 AudioService 统一刷新该音量至全局音量。

二、开发指引

功能性配置文件:device/hisilicon/bigfish/frameworks/hibootvideo/cfg.mak

 

#limit bootvideo time

LOCAL_BOOT_VIDEO_LIMIT:= 2000

#close bootvideo

LOCAL_CLOSE_BOOTVIDEO := 0 //开机视频开关,0 默认开

#volume policy

LOCAL_REGULAR_VOLUME :=0 //固定音量开关

LOCAL_CFLAGS += -DBOOT_SOUND_VOLUME_BIN=\"/atv/db/bootvideo_sound_volume.bin\"

LOCAL_INTEGERGAIN :=-27

LOCAL_DECIMALGAIN := 0

LOCAL_PRESCALE_INTEGERGAIN := 0

LOCAL_PRESCALE_DECIMALGAIN := 0

#suport dolbypus

LOCAL_DOLBYPLUS_HACODEC_SUPPORT :=0

#suport dts

LOCAL_DTS_HACODEC_SUPPORT :=0

#suport start BootAnimation

LOCAL_BOOTANIMATION_OPEN_SUPPORT := 0 //原生开机动画开关

#suport last frame

LOCAL_SUPPORT_LAST_FRAME:= 1 //视频播放完静帧开关

#suport input

LOCAL_SUPPORT_INPUT := 1

 

视频文件路径:device/hisilicon/bigfish/prebuilts/bootvideo.mp4

 

音量调节背景图片路径:device/hisilicon/bigfish/prebuilts/mute.png

                                     device/hisilicon/bigfish/prebuilts/panel.png

 

视频文件路径配置文件:device/hisilicon/bigfish/prebuilts/Android.mk

##################################bootvideo###############

$(shell mkdir -p $(PRODUCT_OUT)/data/local/data/)

#$(shell cp -rf $(LOCAL_PATH)/bootvideo.mp4 $(PRODUCT_OUT)/data/local/data/bootvideo.mp4)

$(shell cp -rf $(LOCAL_PATH)/mute.png $(PRODUCT_OUT)/atv/bootvideo/mute.png)

$(shell cp -rf $(LOCAL_PATH)/panel.png $(PRODUCT_OUT)/atv/bootvideo/panel.png)

include $(PREBUILTS_LOCAL_PATH)/nfsClient/Android.mk



-include $(PREBUILTS_LOCAL_PATH)/AudioIPRDemoLib/Android.mk



ifeq ($(SUPPORT_ANDROIDTV),true)

-include $(PREBUILTS_LOCAL_PATH)/vendor/google/Android.mk

else

-include $(PREBUILTS_LOCAL_PATH)/googleplay/Android.mk

endif



include $(PREBUILTS_LOCAL_PATH)/xbugs/Android.mk

 

单板上存放视频文件路径:data/local/data/bootvideo.mp4

单板上存放动画文件路:atv/bootvideo/bootanimation.zip

 

注:开机视频文件全称应为 bootvideo.mp4,

并放置到如上的指定目录下,其中 bootanimation.zip 应使用存储方式压缩生成。

 

三、调试指引

       使用 Hi3751V811_DMO-eng lunch 选项,默认开机过程中会去查找 data/local/data/bootvideo.mp4 文件是否存在,如果存在则播放该视频(20 秒内),不存在则跳过该步骤。

      

3.1 操作流程

开机视频播放操作步骤如下:

       ① 修改视频文件名为 bootvideo.mp4;

       ② 将 bootvideo.mp4 文件拷贝到 U 盘中;

       ③ U 盘接入 Demo 板中,执行 df 命令如下:

Hi3751V811:/ # df

Filesystem 1K-blocks Used Available Use% Mounted on

rootfs 1946312 4972 1941340 1% /

tmpfs 1949448 584 1948864 1% /dev

/dev/block/mmcblk0p18 1364828 940908 423920 69% /system

/dev/block/mmcblk0p19 297560 165788 131772 56% /vendor

tmpfs 1949448 0 1949448 0% /mnt

none 1949448 12 1949436 1% /sys/fs/cgroup

/dev/block/mmcblk0p22 5078656 191496 4887160 4% /data

/dev/block/mmcblk0p20 16048 6536 9512 41% /atv

/dev/block/mmcblk0p11 5968 44 5924 1% /securestore

/dev/block/mmcblk0p21 96688 60 96628 1% /cache

/data/media 4976256 207880 4768376 5% /mnt/runtime/default/emulated

/dev/block/vold/public:8.1 30702592 598384 30104208 2% /mnt/media_rw/sda1

/mnt/media_rw/sda1 30600192 598384 30001808 2% /mnt/runtime/default/sda1


④ 确定 U 盘挂载目录为 /mnt/media_rw/sda1,将 U 盘中的 bootvideo.mp4 拷贝到 data/local/data 目录下:

Hi3751V811:/ # cp /mnt/media_rw/sda1/b

bootanimation.zip bootvideo.mp4

Hi3751V811:/ # cp /mnt/media_rw/sda1/bootvideo.mp4 /data/local/data/

Hi3751V811:/ #

Hi3751V811:/ # ls -l /data/local/data/

total 14480

-rwx------ 1 root root 14826578 1970-01-01 08:13 bootvideo.mp4

      

⑤ 重启开发板就可以看到对应的开机视频播放。

 

3.2 问题汇总

开机视频未起播

  1. 通过 logcat –s BootVideo 串口查看是否有开机视频的日志打印。
  2. 检查单板 data/local/data/bootvideo.mp4 文件是否存在,视频文件是否受损。
  3. 配置文件 device/hisilicon/bigfish/frameworks/hibootvideo/cfg.mak 是否打开。

 

开机视频播放完黑屏

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

 

开机视频音量跳变

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

 

四、参考资料

《Android 解决方案 开发指南》

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论