微信小程序本地视频播放失败问题分析

非 VIP 用户可前往公众号“前端基地”进行免费阅读,文章链接如下:

微信小程序本地视频播放失败问题分析

        微信小程序中直接播放本地视频资源可能失败,但播放线上视频通常正常。

        播放本地视频的代码示例

        video.wxml

<view class="w">
  <video 
    src="../../videos/course.mp4"
    binderror="binderror"  
  ></video>
</view>

        video.js

Page({
  binderror(err){
    console.log(err)
  }
})

        运行结果,截图如下

        播放线上视频的代码示例

        若把 src 换成线上视频地址,代码如下:

        video.wxml

<view class="w">
  <video 
    src="http://127.0.0.1:5500/data/videos/course.mp4"
    bindplay="bindplay"
    bindpause="bindpause"
    bindended="bindended"
  ></video>
</view>

        video.js

Page({
  bindplay(e){
    console.log(e)
  },
  bindpause(e){
    console.log(e)
  },
  bindended(e){
    console.log(e)
  }
})

        通过把 src 替换成线上视频地址,通常能解决本地视频无法播放的问题。

        运行结果,截图如下:

        属性介绍:

属性

描述

src

视频资源地址(支持网络/本地路径)

binderror

视频播放出错时触发

bindplay

当开始/继续播放时触发play事件

bindpause

当暂停播放时触发pause事件

bindended

当播放到末尾时触发ended事件

### 微信小程序实现本地视频播放的方法 #### 准备工作 为了在微信小程序中实现本地视频播放,需要先准备好要播放视频文件,并将其放置于项目的合适位置。通常情况下,视频可以放在`/assets/videos/`目录下。 #### 使用 `<video>` 组件 微信小程序提供了内置的 `<video>` 组件用于处理多媒体内容展示。该组件支持多种属性设置,如宽度、高度、自动播放等特性[^1]。 ```html <view class="container"> <!-- 定义 video 组件 --> <video id="myVideo" src="/assets/videos/sample.mp4" controls></video> </view> ``` 上述代码片段展示了如何定义一个简单的视频播放器实例。其中 `src` 属性指定了待播放本地视频路径;而 `controls` 参数则表示显示默认控件(播放按钮、进度条等)给用户操作。 #### 设置样式与布局 为了让页面看起来更加美观合理,在 CSS 文件里还可以自定义一些样式规则: ```css /* page.wxss */ .container { display: flex; justify-content: center; align-items: center; } #myVideo { width: 90%; height: auto; /* 自适应高度保持宽高比例 */ } ``` 此部分CSS使得整个容器居中排列,并调整了视频尺寸使其适合不同屏幕大小设备上的观看体验。 #### JavaScript 控制逻辑 如果希望进一步增强交互效果,则可以在对应的 JS 文件内编写额外的功能代码来控制视频行为,比如监听事件或调用 API 接口获取更多信息。 ```javascript // page.js Page({ data: {}, onLoad() { const query = wx.createSelectorQuery(); let that = this; // 获取指定 ID 的节点信息 query.select('#myVideo').fields({ node: true, size: true }, function (res) { console.log('查询结果:', res); // 可在此处添加更多基于 DOM 节点的操作 }).exec(); // 或者直接通过ID访问DOM对象 setTimeout(() => { var context = wx.createVideoContext('myVideo'); // 这里可以根据业务场景执行相应方法 // 如暂停 play(), 停止 stop() context.play(); }, 2000); } }) ``` 这段脚本实现了当页面加载完成后延迟两秒自动开始播放视频的效果。当然也可以根据实际应用场景灵活运用其他可用接口完成特定任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端基地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值