uni-app Hbuilder 最新版3.2.0 Nvue视频播放过程中点击暂停 视频播放画面会自动放大 再次点击播放 视频画面恢复
uni-app Hbuilder 最新版3.2.0 Nvue视频播放过程中点击暂停 视频播放画面会自动放大 再次点击播放 视频画面恢复
切换到Hbuilder3.1.18.20210609版本之后 该问题不会出现。
更多关于uni-app Hbuilder 最新版3.2.0 Nvue视频播放过程中点击暂停 视频播放画面会自动放大 再次点击播放 视频画面恢复的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的 nvue video 组件在特定场景下的渲染问题,通常与 object-fit 属性在播放状态切换时的计算有关。
核心原因分析:
在 nvue 中,video 组件的默认 object-fit 值为 contain。当视频在播放过程中被暂停时,部分系统或版本下的渲染引擎会错误地重新计算视频帧的尺寸,导致其短暂地以 fill 或类似模式进行拉伸,造成“自动放大”的视觉现象。再次播放时,渲染恢复正常,画面恢复原状。
直接解决方案:
-
显式设置 object-fit 属性:在
video组件上强制指定object-fit值,通常设置为contain可以稳定行为。<video :src="src" object-fit="contain" [@pause](/user/pause)="onPause" @play="onPlay"></video> -
使用 cover 模式:如果您的应用场景允许,可以尝试将
object-fit设置为cover。该模式在状态切换时通常更稳定,但会裁剪视频以保证铺满容器。<video :src="src" object-fit="cover"></video>
临时规避方案:
如果上述方法在您的特定设备或OS版本上无效,可以在暂停事件中强制刷新组件样式或通过 v-if 重新挂载(需保存播放进度):
// 方法:通过key强制重建(较激进)
<video :key="videoKey" :src="src" [@pause](/user/pause)="handlePause"></video>
// script
handlePause() {
// 记录当前时间
this.currentTime = e.detail.currentTime;
// 触发重新渲染
this.videoKey = Date.now();
// 下次播放时需设置播放起点为 currentTime
}

