uni-app nvue android机型LivePusher推流,一直回调statechange,启动硬编,code 1008
uni-app nvue android机型LivePusher推流,一直回调statechange,启动硬编,code 1008
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 11.2.3 (20D91) | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
HBuilderX类型:正式
HBuilderX版本号:3.2.16
手机系统:Android
手机系统版本号:Android 11
手机厂商:OPPO
手机机型:oppo reno 2
页面类型:nvue
vue版本:vue2
打包方式:云端
App下载地址或H5网址: www.pgyer.com/X2p2
示例代码:
<live-pusher
id='livePusher'
ref="livePusher"
class="livePusher"
:url="src"
:mode="mode"
:enable-camera="enableCamera"
:auto-focus="true"
:device-position="position"
:beauty="beauty"
:whiteness="whiteness"
aspect="9:16"
[@statechange](/user/statechange)="statechange"
[@netstatus](/user/netstatus)="netstatus"
[@error](/user/error) = "error"
:style="'height: '+windowHeight+'px;'"
style="width: 750rpx;"></live-pusher>
参数
{
"mode": "FHD",
"position": "back",
"beauty": 0,
"whiteness": 0
}
通过以上代码,onReady开始推流
onReady() {
this.context = uni.createLivePusherContext('livePusher', this)
this.startPreview()
// 开始推流
this.start()
},
// 开始推流
start(){
this.context.start({
success:() =>{
this.isStart = true
$H.post('/changestatus',{
id:this.detail.id,
type:"play"
},{
userUuid:this.vuex_userInfo.userUuid,
sessionid: this.vuex_userInfo.sessionid
}).then(res=>{
console.log('changestatus', res);
this.joinOrLeaveLive('join')
}).catch(err=>{
console.log(err);
})
}
})
},
更多关于uni-app nvue android机型LivePusher推流,一直回调statechange,启动硬编,code 1008的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我这边也是ios没问题,安卓死活有问题
小米8会出现TCP连接错误
小米10推流没问题,但是拉出来的流数据是异常的,会卡在一帧上
现在打算不使用livepusher, 自己找人封装推流工具,比如七牛的推流SDK
更多关于uni-app nvue android机型LivePusher推流,一直回调statechange,启动硬编,code 1008的实战教程也可以访问 https://www.itying.com/category-93-b0.html
加一
请问各位大神解决了吗
我这边遇到了几乎一样的问题,可能是重复调用了太多次 startPreview
根据您提供的信息,这是一个典型的LivePusher硬编码器初始化失败问题。code 1008错误通常表示硬件编码器初始化失败,导致反复触发statechange回调。
问题分析:
- 硬件编码器兼容性问题:OPPO Reno 2(Android 11)的硬件编码器可能不支持您设置的
mode: "FHD"(全高清)参数 - 分辨率/码率不匹配:FHD模式(通常为1920x1080)可能超出了该设备硬编支持的范围
- 资源占用冲突:可能与其他正在使用摄像头的应用冲突
解决方案:
- 降低视频参数:
// 将FHD改为HD或SD模式
{
"mode": "HD", // 或 "SD"
"position": "back",
"beauty": 0,
"whiteness": 0
}
- 添加自定义视频配置:
this.context.start({
success: () => {
// 成功回调
},
fail: (err) => {
console.error('推流失败:', err)
}
})
- 检查设备兼容性:
// 在onReady中添加设备能力检测
onReady() {
// 先检查设备支持情况
this.startPreview()
// 延迟开始推流,确保预览稳定
setTimeout(() => {
this.start()
}, 1000)
}
- 尝试软编码(性能较差但兼容性好): 目前uni-app LivePusher主要使用硬编,如果问题持续,可能需要:
- 更新HBuilderX到最新版本
- 检查自定义基座配置
- 测试其他Android机型确认是否为设备特定问题
临时处理: 在statechange回调中添加错误处理:
statechange(e) {
if (e.detail.code === 1008) {
console.log('硬编失败,尝试降低画质')
// 自动降级到HD模式
this.mode = "HD"
this.restartPush()
}
}

