重新校对了传入参数
This commit is contained in:
+2
-2
@@ -6,7 +6,7 @@ ENV = 'development'
|
||||
|
||||
# VITE_APP_BASE_API_Url = 'https://aits.jlbank.com.cn:7001'
|
||||
|
||||
VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7002'
|
||||
#VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7002'
|
||||
|
||||
|
||||
# VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7002'
|
||||
@@ -17,7 +17,7 @@ VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7002'
|
||||
#VITE_APP_BASE_API_Url = 'http://25.18.122.65:7001'
|
||||
# sit
|
||||
|
||||
# VITE_APP_BASE_API_Url = 'http://25.18.122.91:9786'
|
||||
VITE_APP_BASE_API_Url = 'http://25.18.122.91:9786'
|
||||
|
||||
|
||||
# UAT
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
import { ref, onUnmounted, watch, onMounted } from 'vue';
|
||||
const isStop = ref(false);
|
||||
const currentPCMChunk = ref(false);
|
||||
const audioOutput = ref('');
|
||||
const audioOutput = ref('earpiece');
|
||||
// 响应式状态
|
||||
const isPlaying = ref(false); // 是否正在播放
|
||||
const volume = ref(); // 播放音量(0~1)
|
||||
const volume = ref(1); // 播放音量(0~1)
|
||||
const playPCM = (pcmData) => {
|
||||
if (!pcmData || pcmData.byteLength === 0) return;
|
||||
currentPCMChunk.value = pcmData;
|
||||
@@ -42,7 +42,55 @@
|
||||
<script module="renderJS" lang="renderjs">
|
||||
import { StreamPlayer } from "../js/StreamPlayer";
|
||||
let player = null;
|
||||
|
||||
/**
|
||||
* 音频路由兼容方案(适配 H5/小程序/不支持 setAudioRoute 的设备)
|
||||
* @param {string} type - earpiece(听筒)/speaker(扬声器)
|
||||
*/
|
||||
function fallbackAudioRoute(type) {
|
||||
// 1. 通用:创建音频上下文(Web Audio API),控制输出设备
|
||||
try {
|
||||
const AudioContext = window.AudioContext || window.webkitAudioContext;
|
||||
if (AudioContext) {
|
||||
const audioCtx = new AudioContext();
|
||||
// 针对听筒:降低音量+强制单声道(模拟听筒效果)
|
||||
if (type === 'earpiece') {
|
||||
audioCtx.listener.setPosition(0, 0, 0); // 定位到听筒
|
||||
// 若有播放节点,设置音量为 0.3(听筒音量)
|
||||
if (window.audioSource) {
|
||||
window.audioSource.gain.value = 0.3;
|
||||
}
|
||||
} else {
|
||||
// 扬声器:恢复音量+立体声
|
||||
if (window.audioSource) {
|
||||
window.audioSource.gain.value = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e) {}
|
||||
|
||||
// 2. 安卓 H5 特殊处理:通过 Audio 对象的 speakerphone 属性(部分浏览器支持)
|
||||
const audio = new Audio();
|
||||
if (audio.setSpeakerphoneOn) {
|
||||
// 听筒:关闭扬声器;扬声器:打开
|
||||
audio.setSpeakerphoneOn(type !== 'earpiece');
|
||||
audio.play(); // 触发设置生效
|
||||
audio.pause(); // 无需播放实际音频
|
||||
}
|
||||
|
||||
// 3. 小程序端(如微信小程序):调用小程序原生 API
|
||||
if (wx && wx.setAudioRoute) {
|
||||
// 微信小程序专属:切换音频输出(需基础库 2.10.0+)
|
||||
wx.setAudioRoute({
|
||||
route: type === 'earpiece' ? 'earpiece' : 'speaker',
|
||||
success: () => console.log('小程序音频路由切换成功'),
|
||||
fail: (e) => console.error('小程序路由切换失败:', e)
|
||||
});
|
||||
}
|
||||
|
||||
// 4. 兜底提示(非 5+ 环境)
|
||||
console.log(`当前环境不支持强制音频路由,已模拟${type === 'earpiece' ? '听筒' : '扬声器'}效果`);
|
||||
}
|
||||
|
||||
export default {
|
||||
mounted() {
|
||||
const _this = this;
|
||||
@@ -54,9 +102,12 @@
|
||||
pcmType: 'int', // 类型(int/float)
|
||||
callback: _this.callback
|
||||
});
|
||||
this.switchAudioOutput('speaker');
|
||||
},
|
||||
methods: {
|
||||
// 切换音频输出(听筒/扬声器)
|
||||
switchAudioOutput(type) {
|
||||
console.log('切换音频输出')
|
||||
},
|
||||
appendPCMChunk(numArray) {
|
||||
// console.log('接收到', numArray.length);
|
||||
if (!numArray || numArray.length === 0) return;
|
||||
@@ -65,11 +116,6 @@
|
||||
const arrayBuffer = uint8.buffer;
|
||||
player.appendChunk(arrayBuffer);
|
||||
},
|
||||
// 切换扬声器/听筒核心方法
|
||||
switchAudioOutput(type) {
|
||||
// plus.audio.setAudioRoute(type === 'speaker' ? 'speaker' : 'earpiece');
|
||||
|
||||
},
|
||||
// 停止播放(销毁播放器)
|
||||
stop() {
|
||||
if (player) {
|
||||
|
||||
@@ -60,10 +60,8 @@ export enum CompressionType {
|
||||
* 控制指令枚举(配合 MessageType.CONTROL_CMD 使用)
|
||||
*/
|
||||
export enum ControlCommand {
|
||||
HEARTBEAT = 0b0001,
|
||||
PAUSE = 0b0010,
|
||||
RESUME = 0b0011,
|
||||
STOP = 0b0100,
|
||||
START_PLAY = 0b0001, // 一句话播放开始
|
||||
FINISH_PLAY = 0b0010, // 一句话播放结束
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -51,7 +51,8 @@
|
||||
const dataInfo = reactive({
|
||||
traId: '',
|
||||
chaId: '',
|
||||
type: '',
|
||||
traType: '',
|
||||
traInterType: '',
|
||||
execId: '',
|
||||
sceneDesc: '',
|
||||
userName: '',
|
||||
@@ -77,7 +78,7 @@
|
||||
'&execId=' +
|
||||
dataInfo.execId +
|
||||
'&type=' +
|
||||
dataInfo.type +
|
||||
dataInfo.traType +
|
||||
'&isPreview=' +
|
||||
(dataInfo.isPreview ? '1' : '')
|
||||
);
|
||||
@@ -136,7 +137,8 @@
|
||||
onLoad((e) => {
|
||||
dataInfo.traId = e.traId ?? '';
|
||||
dataInfo.chaId = e.chaId ?? '';
|
||||
dataInfo.type = e.type ?? '';
|
||||
dataInfo.traType = e.type ?? ''; // 陪练类型 01-练习 02-考试
|
||||
dataInfo.traInterType = e.traInterType ?? '02'; // 陪练交互类型 01 对话 02 语音 03 视频
|
||||
dataInfo.preview = e.isPreview === '1';
|
||||
const userInfo = getUserInfo();
|
||||
dataInfo.userName = userInfo.userName;
|
||||
|
||||
Reference in New Issue
Block a user