uni-app live-pusher组件在ios手机上切换mode属性后SD(标清), HD(高清), FHD(超清)画面被不同程度放大
uni-app live-pusher组件在ios手机上切换mode属性后SD(标清), HD(高清), FHD(超清)画面被不同程度放大
| 类别 | 信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC系统版本 | win10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.2.16 |
| 手机系统 | iOS |
| 手机版本 | iOS 15 |
| 手机厂商 | 苹果 |
| 手机机型 | iPhone X 和 7 |
| 页面类型 | nvue |
| Vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
示例代码:
<live-pusher id='livePusher' :mode="modev"></live-pusher>
<text @click="modev='FHD'">高清</text>
data() {
return {
modev: 'SD'
}
},
操作步骤:
- 初始化直播插件,开启摄像头,切换超清
预期结果:
- 画面边清晰
实际结果:
- 画面被放大 是拉进摄像头效果
bug描述:
ios手机 不用开启直播 开启摄像头就行 切换高清 超清画面被放大
更多关于uni-app live-pusher组件在ios手机上切换mode属性后SD(标清), HD(高清), FHD(超清)画面被不同程度放大的实战教程也可以访问 https://www.itying.com/category-93-b0.html
提供一个可以稳定复现的demo 附上示例代码在附件中
更多关于uni-app live-pusher组件在ios手机上切换mode属性后SD(标清), HD(高清), FHD(超清)画面被不同程度放大的实战教程也可以访问 https://www.itying.com/category-93-b0.html
请问这个bug还没有修好吗?
您好 您反馈的这个问题 能否提供一个可以稳定复现的Demo?
你好 我新加了评论在下方,里边有附件demo
你好 附件是demo
1、先点击左上角开启摄像头
2、再切换左下角清晰度,画面会被放大,我设备是iphoneX 还有个iphone7p 效果一样
都快2023年了,还没修吗
回复 2***@qq.com: 这个用的是 又拍云的SDK 又拍云原来免费的SDK 现在不维护了 这块是又拍云的Bug
回复 2***@qq.com: 我们正在寻找新的替代方案 如果着急 可以去插件市场找相应的插件
这是一个已知的iOS平台上的渲染适配问题。当live-pusher组件的mode属性在SD、HD、FHD之间切换时,iOS系统会重新初始化摄像头采集参数,但画面渲染的缩放比例未能同步调整,导致画面显示异常放大。
问题原因:
iOS底层在切换分辨率模式时,摄像头采集的画面尺寸发生变化,但live-pusher的渲染层未自动适应新的宽高比,仍按之前的分辨率进行拉伸填充,造成视觉上的“放大”效果。
临时解决方案:
- 重置组件渲染:切换
mode后,尝试先销毁再重新创建live-pusher组件。可通过v-if控制组件重新渲染:
<live-pusher v-if="showPusher" :mode="modev"></live-pusher>
在切换分辨率时:
this.showPusher = false
this.$nextTick(() => {
this.modev = 'FHD' // 或目标分辨率
this.showPusher = true
})
- 使用
aspect属性固定宽高比:显式设置aspect为"3:4"或"9:16",强制渲染层按指定比例显示:
<live-pusher :mode="modev" aspect="9:16"></live-pusher>
- 结合
min-bitrate和max-bitrate:部分情况下,码率参数会影响编码器行为,可尝试同步调整:
<live-pusher
:mode="modev"
:min-bitrate="modev === 'FHD' ? 1200 : 800"
:max-bitrate="modev === 'FHD' ? 2000 : 1200">
</live-pusher>

