uni-app Video API muted=true 在loop下一條影片時沒有作用
uni-app Video API muted=true 在loop下一條影片時沒有作用
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win 10 | HBuilderX |
产品分类:
uniapp/App
PC开发环境操作系统:
Windows
HBuilderX类型:
正式
HBuilderX版本号:
3.1.13
手机系统:
Android
手机系统版本号:
Android 7.0
手机厂商:
電視盒
手机机型:
xxx
页面类型:
vue
打包方式:
云端
示例代码:
<video :src="getMyMedia()" autoplay loop muted=true controls=false @ended='playedEnd()'></video>
VideoList = ["A.mp4","B.mp4"]
VideoIndex = 0
getMyMedia() {
return this.VideoList [this.VideoIndex ]
}
playedEnd(){
this.playIndex ++
if (this.playIndex>=this.playList.length) {
this.playIndex = 0
}
}
操作步骤:
看代碼
预期结果:
loop所有影片都應無聲
实际结果:
一開始A.mp4是無聲的,但下一條影片"B.mp4"就會變成有聲,而再下一條"A.mp4"又會變成有聲
bug描述:
在使用viedo及動態資源時(:src) muted=true 屬性不能遺傳
[“A.mp4”,“B.mp4”]
一開始A.mp4是無聲的,但下一條影片"B.mp4"就會變成有聲,而再下一條"A.mp4"又會變成有聲
更多关于uni-app Video API muted=true 在loop下一條影片時沒有作用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是历史遗留问题,临时解决办法 watch 监听 videosrc 判断
if (静音) {
静音 = false
setTimeout(() => {
静音 = true;
}, 200)
}
更多关于uni-app Video API muted=true 在loop下一條影片時沒有作用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
第二種方法為<view v-html='test'></view>
用一button去改this.test的值
改為this.test = “”
這方法也不行
data() {
return {
myMuted:null,
tmp:null,
myIndex:0,
mySrc:[
‘/storage/emulated/0/KF_App/1-1/1/gg.mp4’,
‘/storage/emulated/0/KF_App/1-1/1/01.mp4’
]
}
},
watch: {
tmp(newVal,oldVal){
this.myMuted = false
setTimeout(()=>{
this.myMuted = true
},200)
}
}<br>在 uni-app 中,muted 属性在视频切换时失效是常见问题,原因是视频组件在切换 src 后部分属性状态不会自动保留。当 loop 触发播放下一视频时,muted 状态未被正确应用到新加载的视频上。
解决方案:
使用 ref 获取 video 组件实例,在 playedEnd 事件中通过代码强制设置静音。修改示例代码如下:
<video ref="videoRef" :src="getMyMedia()" autoplay loop :muted="isMuted" controls=false @ended='playedEnd()'></video>
data() {
return {
VideoList: ["A.mp4", "B.mp4"],
VideoIndex: 0,
isMuted: true
}
},
methods: {
playedEnd() {
this.VideoIndex++;
if (this.VideoIndex >= this.VideoList.length) {
this.VideoIndex = 0;
}
// 确保视频切换后静音状态生效
this.$nextTick(() => {
const video = this.$refs.videoRef;
if (video) {
video.muted = true;
}
});
}
}

