uni-app live-pusher 推流,有画面没有声音
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服务器的配置或联系服务器提供商寻求帮助。