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手机 不用开启直播 开启摄像头就行 切换高清 超清画面被放大

5e8b3ff495ae3f678b06ddbb6ee26b41.zip


更多关于uni-app live-pusher组件在ios手机上切换mode属性后SD(标清), HD(高清), FHD(超清)画面被不同程度放大的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

提供一个可以稳定复现的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的渲染层未自动适应新的宽高比,仍按之前的分辨率进行拉伸填充,造成视觉上的“放大”效果。

临时解决方案:

  1. 重置组件渲染:切换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
})
  1. 使用aspect属性固定宽高比:显式设置aspect"3:4""9:16",强制渲染层按指定比例显示:
<live-pusher :mode="modev" aspect="9:16"></live-pusher>
  1. 结合min-bitratemax-bitrate:部分情况下,码率参数会影响编码器行为,可尝试同步调整:
<live-pusher 
    :mode="modev" 
    :min-bitrate="modev === 'FHD' ? 1200 : 800"
    :max-bitrate="modev === 'FHD' ? 2000 : 1200">
</live-pusher>
回到顶部