目的:实现 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 问题汇总
开机视频未起播
- 通过 logcat –s BootVideo 串口查看是否有开机视频的日志打印。
- 检查单板 data/local/data/bootvideo.mp4 文件是否存在,视频文件是否受损。
- 配置文件 device/hisilicon/bigfish/frameworks/hibootvideo/cfg.mak 是否打开。
开机视频播放完黑屏
- 检查开机视频文件最后一帧是否为黑帧。
- 检查 LOCAL_BOOTANIMATION_OPEN_SUPPORT 是否开启,开机动画图片是否播放。
- 检查 BootVideo 进程是否退出,若退出后,而此时 Lancher 未启动会导致黑屏。
- 检查开机视频时长 LOCAL_BOOT_VIDEO_LIMIT 配置是否合理。
开机视频音量跳变
- 通过 logcat | grep HiMW@ 查看 MW 音量设置情况,找到设置音量的进程。
- 通过 logcat | grep -i audio 抓取串口日志,检查 AudioService 和 AudioPolicyManager 设置音量的时机。
四、参考资料
《Android 解决方案 开发指南》
评论