uni-app live-pusher 推流,有画面没有声音

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app live-pusher 推流,有画面没有声音

开发环境 版本号 项目创建方式
Windows 10 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:10

HBuilderX类型:正式

HBuilderX版本号:4.15

手机系统:Android

手机系统版本号:Android 12

手机厂商:小米

手机机型:红米k30pro

页面类型:nvue

vue版本:vue3

打包方式:云端

项目创建方式:HBuilderX

示例代码:

```html
<live-pusher  
v-if="liveType===1 && liveStatus===1 && appType!=='H5'"  
id="myLivePusher"  
ref="myLivePusher"  
style="{width:sysInfo.windowWidth+'px',height:liveHeight+'px'}"
url="liveUrl"
  mode="FHD"  
muted="false"
  autoplay
  [@statechange](/user/statechange)="onStatechange"
  [@netstatus](/user/netstatus)="onNetstatus"
  [@error](/user/error)="onError"
/>

// 获取推流
let livePusherCtx = null
let isPusher = false // 是否可推流
const onGetPushUrl = () => {
http.request({
url: '/mall4cloud_marketing/live/liveRoom/get_push_url',
method: 'GET'
}).then(res => {
liveUrl.value = res
// 开启直播推流
nextTick(() => {
isPusher = true
livePusherCtx = uni.createLivePusherContext('myLivePusher', instance.proxy)
// 配置推流参数,确保音频相关的设置正确
// livePusherCtx.start({
// audioQuality: 'high', // 设置音频质量
// enableMic: true, // 确保麦克风开启
// audioBitrate: 64, // 音频码率
// audioSampleRate: 44100 // 采样率 });
livePusherCtx.stop()
setTimeout(() => {
livePusherCtx.start() // 开始推流
},10)
})
}).catch(err => {
onHandleModal(err.msg)
})
}

操作步骤:
用户之间点击直播列表进入直播

预期结果:
有声音有画面

实际结果:
无声音有画面

bug描述:
真机测试有声音有画面
云打包之后没有声音有画面,求解决

2 回复

大佬解决了吗 我也遇到这个问题了


在uni-app中使用live-pusher组件进行直播推流时,如果遇到有画面但没有声音的问题,通常可能是音频配置不正确或者权限设置缺失。以下是一些常见的排查和解决方法,主要通过代码示例来展示如何正确配置live-pusher组件。

1. 确保音频权限已申请

首先,确保你的应用已经正确申请了音频录制权限。在manifest.json文件中添加必要的权限配置:

"mp-weixin": {
  "requiredPrivateInfos": ["recordAudio"]
},
"app-plus": {
  "distribute": {
    "android": {
      "permissions": [
        "android.permission.RECORD_AUDIO"
      ]
    }
  }
}

2. live-pusher组件配置

确保live-pusher组件中启用了音频录制。以下是一个基本的配置示例:

<template>
  <view class="container">
    <live-pusher
      id="livePusher"
      url="rtmp://your_rtmp_server/live/stream_key"
      mode="aspectFill"
      autoplay="true"
      muted="false"
      enable-mic="true"
      audio-quality="high"
      @statechange="statechange"
    ></live-pusher>
  </view>
</template>

<script>
export default {
  methods: {
    statechange(e) {
      console.log('Live Pusher State Change:', e.detail);
    }
  }
}
</script>

<style>
.container {
  width: 100%;
  height: 100%;
}
</style>

3. 检查推流地址

确保你的RTMP服务器地址和流密钥是正确的,并且服务器支持音频推流。

4. 系统音量和静音设置

确认设备音量未被静音,同时检查live-pusher组件的muted属性是否设置为false(如上述代码所示)。

5. 调试和日志

使用statechange事件监听推流状态变化,可以帮助你了解推流过程中可能遇到的问题。此外,查看控制台日志或服务器日志也可能提供有用的调试信息。

6. 兼容性测试

不同设备和浏览器对WebRTC和RTMP的支持程度不同,确保在目标平台上进行充分的测试。

通过上述步骤,你应该能够定位并解决uni-app中使用live-pusher组件进行直播推流时遇到的音频问题。如果问题依然存在,建议检查RTMP服务器的配置或联系服务器提供商寻求帮助。

回到顶部