news 2026/10/28 1:57:24

# 微信小程序 video视频弹幕案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
# 微信小程序 video视频弹幕案例

微信小程序 video视频弹幕案例

一、实验目的

掌握小程序video视频组件的使用,熟悉弹幕发送接口sendDanmu,实现自定义弹幕发送功能,理解视频上下文createVideoContext。

二、核心知识点

  1. <video>组件:danmu-list、enable-danmu、danmu-btn弹幕相关属性
  2. wx.createVideoContext()获取视频实例
  3. sendDanmu()动态发送弹幕
  4. input组件数据绑定、事件获取输入内容

三、完整代码

index.wxml

<scroll-viewclass="scrollarea"scroll-ytype="list"><viewclass="box"><viewclass="title">空洞骑士-苦痛之路</view><viewclass="video-layout"><videoid="my-video"src="[https://636c-cloud1-d3g79e0s109db07e4-1505503890.tcb.qcloud.la/6ABC3FB2B317F0B8.mp4?sign=c09603159b5h278c043caaf1967f4934&t=179909576](https://636c-cloud1-d3g79e0s109db07e4-1505503890.tcb.qcloud.la/6ABC3FB2B317F0B8.mp4?sign=c09603159b5h278c043caaf1967f4934&t=179909576)"controls="true"danmu-list="{{danmuList}}"enable-danmu="true"danmu-btn="true"></video></view><view><viewclass="txt-style">弹幕内容</view><inputtype="text"placeholder="在此处输入弹幕内容"bind:blur="inputBlur"/><buttontype="primary"bind:tap="sendDanmu">发送弹幕</button></view></view></scroll-view>

index.js

Page({ data: { danmuList: [], inputText: "" }, inputBlur(e) { this.setData({ inputText: e.detail.value }) }, sendDanmu() { if (!this.data.inputText.trim()) { return } const videoCtx = wx.createVideoContext("my-video") videoCtx.sendDanmu({ text: this.data.inputText, color: "#ff4444" }) this.setData({ inputText: "" }) } })

index.wxss

page { height: 100%; } .scrollarea { height: 100vh; } .box { padding: 20rpx; } .title { font-size: 32rpx; text-align: center; margin-bottom: 20rpx; color:red; } .video-layout { width: 100%; margin-bottom: 30rpx; } video { width: 100%; } .txt-style { font-size: 28rpx; margin-bottom: 10rpx; } input { height: 80rpx; border-bottom: 2rpx solid blue; margin-top: 10rpx; margin-bottom: 20rpx; } button { margin-top: 10rpx; }

index.json

{ "navigationBarTitleText": "视频弹幕", "usingComponents": {} }

app.json

{ "pages": [ "pages/index/index" ], "window": { "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "视频弹幕", "navigationBarTextStyle": "black" }, "style": "v2", "sitemapLocation": "sitemap.json" }

四、运行说明

  1. 视频文件上传至云开发存储,复制云存储下载链接填入video的src
  2. 编译运行,打开视频弹幕开关
  3. 在输入框输入弹幕文字,点击发送弹幕,视频上方弹出红色弹幕
  4. 增加非空判断,空内容无法发送弹幕

五、问题排查

视频403报错:云存储下载链接带签名,具有时效性,链接过期后重新在云存储控制台复制最新链接即可;旧缓存请求会残留报错,清除工具缓存后重新编译。

六、实验总结

本案例使用video媒体组件实现视频播放与自定义弹幕交互,借助VideoContext对象调用sendDanmu接口发送弹幕,熟悉小程序媒体组件开发与云存储资源引用方式。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 1:57:24

【共创稿事节】从手机到 2in1:一个菜谱应用的三断点适配实录

一、为什么个人项目也要认真做适配 个人开发者最容易把"多设备适配"当成大厂的事——反正用户主要在手机上。但 module.json5 里一行 deviceTypes 就决定了你的应用出现在哪些设备上&#xff1a;写了三个设备却只按手机调布局&#xff0c;等于自愿在平板和电脑上呈现…

作者头像 李华
网站建设 2026/10/28 1:56:24

377.组合总和 Ⅳ(背包)

链接&#xff1a;377. 组合总和 Ⅳ - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; 组合总和 IV dp[i] 目标位i的组合组数是多少 dp[i] dp[i-A0] dp[i-A[1]] .. dp[1-A[n-1]]&#xff0c;枚举所有最后一个数字的可能 class Solution { public:int combination…

作者头像 李华
网站建设 2026/10/28 1:55:33

基于多星座导航信号模拟器的导航大模型端到端定位算法验证方法

摘 要&#xff1a;面向自动驾驶、无人机等安全关键场景&#xff0c;基于深度学习、大模型架构的GNSS智能接收机逐步用于城市遮挡、多径、欺骗等恶劣环境下的定位解算。野外实测方式难以获取带精准真值、参数可控的遮挡与欺骗样本&#xff0c;且场景复现与变量隔离难度高&#…

作者头像 李华
网站建设 2026/10/28 1:53:59

什么是四线制测试?为什么电池测试经常使用四线制?

四线制是电池测试中非常重要的一个概念。尤其是涉及低电阻、精密电压测量或者较大电流测试时&#xff0c;经常会看到它。一、两线制有什么问题&#xff1f;假设我们用两根线连接测试设备和电池。这两根线既负责传输电流&#xff0c;又负责测量电压。问题就来了&#xff1a;线缆…

作者头像 李华
网站建设 2026/10/28 1:53:58

aiopsterm 插件开发

aiopsterm 插件开发aiopsterm 插件是宿主可验证、可安装的声明式能力包&#xff0c;不执行插件自带的 JavaScript 入口。当前支持两类插件&#xff1a;content&#xff1a;向终端工作区贡献可见命令。provider&#xff1a;向宿主贡献受控的数据导入表单&#xff0c;由宿主适配器…

作者头像 李华
网站建设 2026/10/28 1:53:45

汽车电气系统深度科普!

搁二三十年前&#xff0c;车上那点电气系统说白了就是"三大件"&#xff1a;大灯、喇叭、点火线圈。掰着手指头都能数过来&#xff0c;出了问题也好找&#xff0c;顺着线捋就行。现在可完全不是那回事了。中控大屏、电动座椅、自动空调、全景天窗、座椅加热通风、各种…

作者头像 李华