uni-app ios端video组件播放rtmp直播流地址时,连接蓝牙耳机仍扬声播放,音频只在iphone设备中输出。
uni-app ios端video组件播放rtmp直播流地址时,连接蓝牙耳机仍扬声播放,音频只在iphone设备中输出。
开发环境
| 项目 | 版本/信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC操作系统 | Windows |
| PC操作系统版本 | Windows7 旗舰版 Service Pack 1 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.2.3 |
| 手机系统 | iOS |
| 手机系统版本 | IOS 14 |
| 手机厂商 | 苹果 |
| 手机机型 | iphone xsMax, iphone11, iphone12 |
| 页面类型 | nvue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
示例代码
<template>
<view>
<video id="myVideo" ref="myVideo" class="myVideo" :style="'width:'+windowWidth+'px;height:'+windowHeight+'px'"
:autoplay="true" :src="liveUrl" :muted="muted" :controls='false' :object-fit="objectFit">
</video>
</view>
</template>
<script>
import http from '@/utils/request.js'
export default {
data() {
return {
windowHeight: 0,
windowWidth: 0,
btnTop:60,
btnButtom:800,
dmButtom:0,
ftbot:230,
muted:false,
liveUrl:"",
liveList:'',
liveState:'START',
objectFit:'cover',
}
},
onLoad(options) {
console.log('进入页面')
// 点播地址
this.liveUrl = 'http://video.xmhhtkd.cn/10%E5%BC%80%E5%8F%91%E9%99%A2%E7%AC%AC%E5%8D%81%E5%A5%94.mp4';
// 直播地址
this.liveUrl = 'rtmp://media3.scctv.net/live/scctv_800'
// 苹果安卓适配
if(uni.getSystemInfoSync().platform=='ios'){
this.objectFit = 'fill';
}
else{
this.objectFit = 'cover';
}
},
onShow(){
this.btnTop = uni.getSystemInfoSync().statusBarHeight+6;
this.btnButtom = uni.getSystemInfoSync().windowHeight-66
this.dmButtom = uni.getSystemInfoSync().windowHeight-346;
this.windowWidth = uni.getSystemInfoSync().windowWidth
this.windowHeight = uni.getSystemInfoSync().windowHeight
},
onReady: function(res) {
this.videoContext = uni.createVideoContext('myVideo', this)
},
methods: {
}
}
</script>
操作步骤
进入页面使用点播地址播放,声音播放为已连接的音频设备,进入页面使用直播地址播放,声音播放为扬声。
预期结果
进入页面播放直播地址,ios系统和android系统一致默认使用已连接的蓝牙设备播放,音频设备里会显示已连接的蓝牙耳机设备。
实际结果
ios系统播放直播地址,已连接上的蓝牙耳机,在蓝牙里是显示已连接,但音频里没有连接的蓝牙耳机。
更多关于uni-app ios端video组件播放rtmp直播流地址时,连接蓝牙耳机仍扬声播放,音频只在iphone设备中输出。的实战教程也可以访问 https://www.itying.com/category-93-b0.html
同样的问题,ios15 基座3.2.9版本,rtmp与flv的直播流都无法使用蓝牙耳机播放
更多关于uni-app ios端video组件播放rtmp直播流地址时,连接蓝牙耳机仍扬声播放,音频只在iphone设备中输出。的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3.2.16还是有同样的问题
遇到了同样的问题顶一下
同问,没什么解决办法
同问,要解决方法吗
这玩意是没人处理了算是,这么久了还没修
再提供一个可以 播放的rtmp 我来跟进
HBuilderX alpha 3.4.13 已修复
在uni-app iOS端,video组件播放RTMP直播流时出现蓝牙耳机音频输出异常,这通常与iOS系统的音频会话(Audio Session)管理机制有关。RTMP流在iOS上可能被系统识别为“媒体播放”类别,而默认情况下,某些直播流可能未正确触发音频路由切换。
可能原因及解决方案:
-
音频会话配置问题
iOS中音频输出设备的选择由AVAudioSession控制。RTMP直播流可能未主动申请蓝牙音频路由,导致系统仍使用扬声器。可尝试通过原生插件或条件编译调用iOS原生API设置音频会话类别:// 在App.vue或页面中,通过条件编译调用原生代码 // #ifdef APP-PLUS const audioSession = plus.ios.importClass('AVAudioSession'); const session = audioSession.sharedInstance(); session.setCategoryError('AVAudioSessionCategoryPlayAndRecord', 0x00000001); // 允许蓝牙输出 session.setActiveError(true); // #endif -
直播流格式影响
RTMP协议本身对音频路由的支持较弱,尤其在某些编码格式下。可尝试:- 检查RTMP流音频编码格式(如AAC),确保其兼容性。
- 测试HLS(.m3u8)格式直播流,iOS对HLS的音频路由支持更稳定。
-
video组件属性调整
虽然示例代码中已设置muted:false,但可尝试动态控制:onLoad() { this.muted = true; setTimeout(() => { this.muted = false; // 延迟取消静音,触发音频重新路由 }, 500); }

