video组件弹幕
本次课程作业围绕微信小程序video视频组件展开,目标是实现视频播放与自定义弹幕发送功能。按照老师PPT案例要求完成基础页面布局,同时我尝试把播放素材替换成自己上传到云开发存储中的视频,踩了不少坑,在这里记录一下学习过程。
一开始我先搭建页面结构,页面分为视频播放区域、弹幕输入框和发送按钮。视频组件开启弹幕相关属性,页面样式、标题、边框布局都对照课件实现。课件示例用的是公网视频链接,可以直接播放。但我想使用自己上传到云开发存储里的视频文件,这就遇到了第一个难题。
图片、音频组件可以直接识别云存储的fileID地址,但是video组件对cloud://协议的支持并不好。哪怕视频已经成功上传到云存储文件夹、存储权限也设置为全部用户可读,直接把fileID填入视频src依然无法播放。反复调试之后才明白,二者底层支持不一样。
想要正常播放云存储里面的视频,需要调用接口getTempFileURL,把云文件ID转换成带签名的临时https网址。这个临时链接才是video组件能够识别的地址。这段代码放在页面加载的时候执行,拿到网址之后再赋值给视频地址变量,视频就可以正常加载播放了。
调试过程中还遇到了组件报错的问题。课件中原版引入了weui导航栏组件,如果没有提前安装npm包并构建npm,页面会找不到组件,直接渲染成工具默认欢迎页。为了简化作业、避开npm依赖问题,我选择去掉额外的导航栏组件,保留视频和弹幕核心功能,保证代码简洁稳定。
弹幕功能本身逻辑比较清晰:页面加载时获取视频上下文对象,输入框失去焦点时拿到用户输入的文字,点击发送按钮,调用视频上下文的发送弹幕方法,同时自动随机生成弹幕颜色,实现彩色弹幕效果。初始弹幕列表提前写好,打开视频就会自动弹出预设弹幕。
最后总结一下这次作业的收获:
- 小程序不同媒体组件对云存储fileID支持程度不一样,video组件不能像图片那样直接使用fileID。
- 云存储视频播放优先使用临时链接方案,但是临时链接有有效期,适合课程作业,不适合正式上线项目。
- 使用第三方UI组件要留意npm依赖,作业尽量减少额外组件,降低出错概率。
- 云存储权限修改之后不会立刻生效,需要等待一小段时间缓存更新,修改完不要马上测试。
整体来看,video弹幕这个案例不难,难点集中在云存储视频的适配上面。真机调试是检验效果的关键,模拟器对云存储视频支持有限,验收作业以微信真机里的运行效果为准。后续我还会继续熟悉小程序媒体组件和云存储搭配使用的方式。