uni-app video 全屏后切换播放暂停 视频会闪动
uni-app video 全屏后切换播放暂停 视频会闪动
示例代码:
<video class="video" :src="videoUrl" :controls="true" style="width: 750rpx;height: 422rpx"></video>
操作步骤:
播放视频然后全屏视频 点击左下角暂停播放按钮
预期结果:
视频不发生闪动
实际结果:
视频会闪动
bug描述:
video 全屏后切换左下角播放暂停按钮 视频会闪动
请查看附件图片和视频 注意视频上的字幕位置


更多关于uni-app video 全屏后切换播放暂停 视频会闪动的实战教程也可以访问 https://www.itying.com/category-93-b0.html
6 回复
你调试下这个页面,看下是不是暂停图标字体不同导致的。你更换其他视频是正常吗
更多关于uni-app video 全屏后切换播放暂停 视频会闪动的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我这里调试会报“已断开与调试服务的连接” 根据提示排查后尚未解决 更换其他视频也是有这个问题
回复 小雨不简单: 提供个复现工程把,我验证一下
回复 DCloud_UNI_OttoJi: 你好 复现工程私发你了
这是一个已知的 uni-app video 组件在全屏状态下的渲染问题。当视频全屏后切换播放/暂停时,由于视频播放器在全屏状态下的重新布局和渲染机制,会导致画面短暂闪动。
问题原因:
- 全屏切换时视频播放器需要重新初始化渲染层
- 播放状态改变触发了视频解码器的重置
- 原生视频控件与 uni-app 框架层的同步问题
解决方案:
方案一:使用自定义播放控制
<video
class="video"
:src="videoUrl"
:controls="false"
@play="onPlay"
@pause="onPause"
style="width: 750rpx;height: 422rpx">
</video>
<view class="custom-controls">
<button @click="togglePlay">{{ isPlaying ? '暂停' : '播放' }}</button>
</view>
export default {
data() {
return {
videoContext: null,
isPlaying: false
}
},
mounted() {
this.videoContext = uni.createVideoContext('myVideo', this)
},
methods: {
togglePlay() {
if (this.isPlaying) {
this.videoContext.pause()
} else {
this.videoContext.play()
}
},
onPlay() {
this.isPlaying = true
},
onPause() {
this.isPlaying = false
}
}
}
方案二:添加过渡效果
.video {
transition: opacity 0.1s ease;
}


