HarmonyOS三方件开发指南(16)-VideoCache 视频缓存

 

引言

对于视频播放器这个app大家都不陌生,在我们日常生活中随处可见,但对于用户而言,最重要的就是如何能节约流量,使用简单,观看视频流畅等体验。对于Android VideoCache 在各大网站的学习文档、教程已经很多,而且层出不穷,但是对于鸿蒙来讲,还是一个新的领域,因此,鸿蒙版的VideoCache 顺势而为,华丽的诞生了。

功能介绍

鸿蒙VideoCache视频缓存组件,主要功能包括:视频缓冲,在线播放视频,边下载边缓存,缓冲进度和播放进度同时进行,拖动播放,横竖屏切换,音量调节等主要功能。模拟机效果图如下:

1.竖屏状态:

【软通动力】HarmonyOS三方件开发指南(16)-VideoCache 视频缓存

【软通动力】HarmonyOS三方件开发指南(16)-VideoCache 视频缓存

2.横屏状态

【软通动力】HarmonyOS三方件开发指南(16)-VideoCache 视频缓存

【软通动力】HarmonyOS三方件开发指南(16)-VideoCache 视频缓存

接下来得内容就是重中之重,对于开发者来讲,如何简单并且快速的使用该VideoCache视频缓存组件,这才是开发者最关注的问题。下面则详细介绍VideoCache的使用以及开发指南

VideoCache使用指南

Ø 新建工程, 添加组件Har包依赖

在应用模块中添加HAR,只需要将videocachelibrary-debug.har复制到entry\libs目录下即可

Ø 修改配置文件

1. 在entry下面的build.gradle添加library 的依赖,如图所示:

【软通动力】HarmonyOS三方件开发指南(16)-VideoCache 视频缓存

1. 修改代码中的配置:

a. 在基类中实例化代理服务,核心代码如下:

httpProxyCacheServer = new HttpProxyCacheServer.Builder(theApplication).headerInjector(new UserAgentHeadersInjector()) .maxCacheSize(1024 * 1024 * 1024)// 1 Gb for cache .singleFileBandwidth(600)//单位KB,https需要1.5倍左右 .build();

b.在使用的地方初始化播放器,并调用代理服务将新生成的路径传入播放器,代码如下:

proxyUrl = BaseSlice.getProxy().getProxyUrl("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"); BaseSlice.getProxy().registerCacheListener(mCacheListener, proxyUrl);//缓存监听 playerVideo = new PlayerVideo(this, proxyUrl, this, layout); playerVideo.setDisplayMath(0, 1000);

c.其他相关设置方法,代码如下:

* 设置播放器的宽高 dependentLayout.setWidth(width); dependentLayout.setHeight(height); 或者: dependentLayout.setWidth(ComponentContainer.LayoutConfig.MATCH_PARENT); dependentLayout.setHeight(ComponentContainer.LayoutConfig.MATCH_PARENT); * 设置播放器的横竖屏 //横屏 abilitySlice.getAbility().setDisplayOrientation(AbilityInfo.DisplayOrientation.LANDSCAPE); //竖屏 abilitySlice.getAbility().setDisplayOrientation(AbilityInfo.DisplayOrientation.PORTRAIT); //系统判断 abilitySlice.getAbility().setDisplayOrientation(AbilityInfo.DisplayOrientation.UNSPECIFIED); //跟随栈中应用 abilitySlice.getAbility().setDisplayOrientation(AbilityInfo.DisplayOrientation.FOLLOWRECENT); * 初始化播放器 player = new Player(context); surfaceProvider.pinToZTop(false); java.util.Optional<ohos.agp.graphics.SurfaceOps> optional = surfaceProvider.getSurfaceOps(); SurfaceOps surfaceOps = optional.get(); surfaceOps.addCallback(new VideoSurfaceCallback(surfaceOps, loadUrl, player, this )); * 播放方法 player.play(); * 暂停播放方法 player.pause();

VideoCache开发指南

      在上述中,已经大概说了VideoCache 的功能点,视频缓冲,在线播放视频,边下载边缓存,缓冲进度和播放进度同时进行,拖动播放,横竖屏切换,音量调节等主要功能,接下来一 一说明主要实现方法。

在视频播放器中,最常见的就是缓冲进度条,进度条用户可以很直观的看到目前已经缓冲的视频有多少,缓冲了多长时间,进度条设置代码如下:

     progressBar.setMaxValue(100);
     progressBar.setMinValue(0);
     progressBar.setProgressValue(cacheProgress);

      通过根据已经缓冲的字节,即可计算出cacheProgress

MaxValue 值不是固定的100,也可以按照视频的时长、字节等设置,然后计算百分比即可,根据具体需求设计。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysdff.html