x
This commit is contained in:
+48
-127
@@ -52,7 +52,7 @@ if (uni.restoreGlobal) {
|
||||
}
|
||||
return target;
|
||||
};
|
||||
const _sfc_main$3 = {
|
||||
const _sfc_main$2 = {
|
||||
data() {
|
||||
return {
|
||||
options: null,
|
||||
@@ -111,7 +111,7 @@ if (uni.restoreGlobal) {
|
||||
}
|
||||
}
|
||||
};
|
||||
function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return vue.openBlock(), vue.createElementBlock("view", {
|
||||
options: vue.wp($data.options),
|
||||
"change:options": _ctx.record.startRecord,
|
||||
@@ -120,91 +120,8 @@ if (uni.restoreGlobal) {
|
||||
}, null, 8, ["options", "change:options", "status", "change:status"]);
|
||||
}
|
||||
if (typeof block0$1 === "function")
|
||||
block0$1(_sfc_main$3);
|
||||
const __easycom_0 = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$2], ["__file", "C:/Users/1/Desktop/testAudio/测试流式传输uniapp/uni_modules/yao-RecordFrame/components/yao-RecordFrame/yao-RecordFrame.vue"]]);
|
||||
const block0 = (Comp) => {
|
||||
(Comp.$renderjs || (Comp.$renderjs = [])).push("renderJS");
|
||||
(Comp.$renderjsModules || (Comp.$renderjsModules = {}))["renderJS"] = "5f91482f";
|
||||
};
|
||||
const _sfc_main$2 = {
|
||||
data() {
|
||||
return {
|
||||
currBuffer: null,
|
||||
isStop: false,
|
||||
isStreamPlaying: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
connect() {
|
||||
this.ws = uni.connectSocket({
|
||||
url: "ws://172.16.89.58:8000/ws/audio",
|
||||
complete: () => {
|
||||
formatAppLog("log", "at uni_modules/sdx-StreamPlayer/components/sdx-StreamPlayer/sdx-StreamPlayer.vue:27", "complete");
|
||||
},
|
||||
success: () => {
|
||||
formatAppLog("log", "at uni_modules/sdx-StreamPlayer/components/sdx-StreamPlayer/sdx-StreamPlayer.vue:30", "web");
|
||||
this.ws.onOpen((res) => {
|
||||
formatAppLog("log", "at uni_modules/sdx-StreamPlayer/components/sdx-StreamPlayer/sdx-StreamPlayer.vue:32", "WebSocket连接已打开", res);
|
||||
this.ws.onMessage((res2) => {
|
||||
let messageData = res2.data;
|
||||
if (typeof messageData === "string") {
|
||||
try {
|
||||
const parsedData = JSON.parse(messageData);
|
||||
this.handleMessage(parsedData);
|
||||
} catch (e) {
|
||||
this.handleMessage(messageData);
|
||||
}
|
||||
} else if (messageData instanceof ArrayBuffer) {
|
||||
this.isStreamPlaying = true;
|
||||
this.currBuffer = uni.arrayBufferToBase64(messageData);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
end() {
|
||||
this.isStop = !this.isStop;
|
||||
},
|
||||
changeStreamPlaying(e) {
|
||||
this.isStreamPlaying = e.type;
|
||||
},
|
||||
appendBuffer(messageData) {
|
||||
this.isStreamPlaying = true;
|
||||
this.currBuffer = uni.arrayBufferToBase64(messageData);
|
||||
}
|
||||
}
|
||||
};
|
||||
function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return vue.openBlock(), vue.createElementBlock(
|
||||
vue.Fragment,
|
||||
null,
|
||||
[
|
||||
vue.createElementVNode("button", {
|
||||
type: "default",
|
||||
onClick: _cache[0] || (_cache[0] = (...args) => $options.connect && $options.connect(...args))
|
||||
}, "播放音频"),
|
||||
vue.createElementVNode("button", {
|
||||
type: "default",
|
||||
onClick: _cache[1] || (_cache[1] = (...args) => $options.end && $options.end(...args))
|
||||
}, "结束播放"),
|
||||
vue.createCommentVNode(" 逻辑层和renderjs的交互需要通过这种方式传递数据,具体看文档 "),
|
||||
vue.createElementVNode("view", {
|
||||
isStop: vue.wp($data.isStop),
|
||||
"change:isStop": _ctx.renderJS.stop,
|
||||
prop: vue.wp($data.currBuffer),
|
||||
"change:prop": _ctx.renderJS.playTTS,
|
||||
type: "renderjs",
|
||||
module: "renderJS"
|
||||
}, null, 8, ["isStop", "change:isStop", "prop", "change:prop"])
|
||||
],
|
||||
64
|
||||
/* STABLE_FRAGMENT */
|
||||
);
|
||||
}
|
||||
if (typeof block0 === "function")
|
||||
block0(_sfc_main$2);
|
||||
const __easycom_1 = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1], ["__file", "C:/Users/1/Desktop/testAudio/测试流式传输uniapp/uni_modules/sdx-StreamPlayer/components/sdx-StreamPlayer/sdx-StreamPlayer.vue"]]);
|
||||
block0$1(_sfc_main$2);
|
||||
const __easycom_0 = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1], ["__file", "C:/Users/1/Desktop/testAudio/测试流式传输uniapp/uni_modules/yao-RecordFrame/components/yao-RecordFrame/yao-RecordFrame.vue"]]);
|
||||
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
|
||||
var encoding$1 = { exports: {} };
|
||||
var encodingIndexes = { exports: {} };
|
||||
@@ -2188,9 +2105,16 @@ if (uni.restoreGlobal) {
|
||||
};
|
||||
}
|
||||
}
|
||||
const block0 = (Comp) => {
|
||||
(Comp.$renderjs || (Comp.$renderjs = [])).push("renderJS");
|
||||
(Comp.$renderjsModules || (Comp.$renderjsModules = {}))["renderJS"] = "49b84592";
|
||||
};
|
||||
const _sfc_main$1 = {
|
||||
data() {
|
||||
return {
|
||||
currentPCMChunk: null,
|
||||
isStop: false,
|
||||
// 停止播放指令
|
||||
status: "未录音",
|
||||
currentDecibels: 0,
|
||||
isRecording: false,
|
||||
@@ -2205,9 +2129,10 @@ if (uni.restoreGlobal) {
|
||||
frameBufferList: [],
|
||||
// 缓存音频帧
|
||||
// wsUrl: "ws://127.0.0.1:8000/ws/audio", // 替换为实际后端地址
|
||||
wsUrl: "ws://172.16.89.58:8000/ws/audio"
|
||||
// 替换为实际后端地址
|
||||
// wsUrl: 'ws://172.16.89.58:8000/ws/audio' // 替换为实际后端地址
|
||||
// wsUrl: "ws://25.64.32.157:9603/trapractice/voiceCallSocket/voiceCall?summary=3D072C9D242C96EA3F0FD647CB14A6F4B4BEA4493BB2FAAB065935FB405071B8A903128E488B6D06BEB23FD4E3D15EE6", // 替换为实际后端地址
|
||||
wsUrl: "wss://aitstest.jlbank.com.cn:7001/trapractice/voiceCallSocket/voiceCall?summary=3D072C9D242C96EA3F0FD647CB14A6F44A8F9EF1C3D9726612B7339B566489139850DF3BE002DF99495FD60B34A5899D"
|
||||
// 替换为实际后端地址
|
||||
};
|
||||
},
|
||||
onUnload() {
|
||||
@@ -2218,17 +2143,17 @@ if (uni.restoreGlobal) {
|
||||
this.ws = uni.connectSocket({
|
||||
url: this.wsUrl,
|
||||
fail: () => {
|
||||
formatAppLog("log", "at pages/index/index.vue:49", "fail");
|
||||
formatAppLog("log", "at pages/index/index.vue:64", "fail");
|
||||
},
|
||||
success: () => {
|
||||
formatAppLog("log", "at pages/index/index.vue:52", "web");
|
||||
formatAppLog("log", "at pages/index/index.vue:67", "web");
|
||||
},
|
||||
fail: () => {
|
||||
formatAppLog("log", "at pages/index/index.vue:55", "fail");
|
||||
formatAppLog("log", "at pages/index/index.vue:70", "fail");
|
||||
}
|
||||
});
|
||||
this.ws.onOpen((res) => {
|
||||
formatAppLog("log", "at pages/index/index.vue:59", "WebSocket连接已打开", res);
|
||||
formatAppLog("log", "at pages/index/index.vue:74", "WebSocket连接已打开", res);
|
||||
this.ws.send({
|
||||
data: ProtocolCodec.pack(MessageType.IDENTITY, {
|
||||
user_id: "1001",
|
||||
@@ -2238,15 +2163,19 @@ if (uni.restoreGlobal) {
|
||||
});
|
||||
});
|
||||
this.ws.onMessage((res) => {
|
||||
const {
|
||||
msgType,
|
||||
body
|
||||
} = ProtocolCodec.unpack(res.data);
|
||||
const { msgType, body } = ProtocolCodec.unpack(res.data);
|
||||
if (msgType === MessageType.IDENTITY) {
|
||||
formatAppLog("log", "at pages/index/index.vue:75", "身份校验成功", body);
|
||||
formatAppLog("log", "at pages/index/index.vue:87", "身份校验成功", body);
|
||||
this.onStartRecord();
|
||||
} else if (msgType === MessageType.AUDIO_DATA) {
|
||||
this.$refs.aaa.appendBuffer(body);
|
||||
const buffer = body;
|
||||
if (buffer.byteLength < 2)
|
||||
return;
|
||||
const uint8 = new Uint8Array(buffer);
|
||||
const numArray = Array.from(uint8);
|
||||
this.currentPCMChunk = numArray;
|
||||
} else {
|
||||
formatAppLog("log", "at pages/index/index.vue:99", "其他消息", body);
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -2265,7 +2194,7 @@ if (uni.restoreGlobal) {
|
||||
}
|
||||
return isGranted;
|
||||
} catch (e) {
|
||||
formatAppLog("error", "at pages/index/index.vue:99", "申请权限失败:", e);
|
||||
formatAppLog("error", "at pages/index/index.vue:118", "申请权限失败:", e);
|
||||
return false;
|
||||
}
|
||||
},
|
||||
@@ -2281,16 +2210,13 @@ if (uni.restoreGlobal) {
|
||||
},
|
||||
// 开始录音
|
||||
onStartRecord() {
|
||||
formatAppLog("log", "at pages/index/index.vue:119", "开始录音");
|
||||
formatAppLog("log", "at pages/index/index.vue:138", "开始录音");
|
||||
try {
|
||||
this.$refs.recordFrame.start({
|
||||
sampleRate: 16e3,
|
||||
frameSize: 1024,
|
||||
gain: 1,
|
||||
onFrameRecorded: ({
|
||||
isLastFrame,
|
||||
frameBuffer
|
||||
}) => {
|
||||
onFrameRecorded: ({ isLastFrame, frameBuffer }) => {
|
||||
try {
|
||||
this.ws.send({
|
||||
data: ProtocolCodec.pack(MessageType.AUDIO_DATA, frameBuffer)
|
||||
@@ -2305,7 +2231,7 @@ if (uni.restoreGlobal) {
|
||||
this.isRecording = true;
|
||||
this.status = "录音中...";
|
||||
} catch (e) {
|
||||
formatAppLog("error", "at pages/index/index.vue:142", "启动录音失败:", e);
|
||||
formatAppLog("error", "at pages/index/index.vue:158", "启动录音失败:", e);
|
||||
this.status = "启动录音失败";
|
||||
this.isRecording = false;
|
||||
}
|
||||
@@ -2334,17 +2260,14 @@ if (uni.restoreGlobal) {
|
||||
this.currentDecibels = 0;
|
||||
},
|
||||
// 接收音频帧并处理
|
||||
frameRecorded({
|
||||
isLastFrame,
|
||||
frameBuffer
|
||||
}) {
|
||||
frameRecorded({ isLastFrame, frameBuffer }) {
|
||||
if (this.ws) {
|
||||
try {
|
||||
this.ws.send({
|
||||
data: frameBuffer
|
||||
});
|
||||
} catch (e) {
|
||||
formatAppLog("error", "at pages/index/index.vue:194", "发送音频帧失败:", e);
|
||||
formatAppLog("error", "at pages/index/index.vue:207", "发送音频帧失败:", e);
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2354,13 +2277,12 @@ if (uni.restoreGlobal) {
|
||||
// 录音停止回调
|
||||
stopIt(base64) {
|
||||
this.stopRecordAndClean();
|
||||
formatAppLog("log", "at pages/index/index.vue:210", "录音停止,最终音频Base64:", (base64 == null ? void 0 : base64.substring(0, 50)) + "...");
|
||||
formatAppLog("log", "at pages/index/index.vue:221", "录音停止,最终音频Base64:", (base64 == null ? void 0 : base64.substring(0, 50)) + "...");
|
||||
}
|
||||
}
|
||||
};
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
const _component_yao_RecordFrame = resolveEasycom(vue.resolveDynamicComponent("yao-RecordFrame"), __easycom_0);
|
||||
const _component_sdx_StreamPlayer = resolveEasycom(vue.resolveDynamicComponent("sdx-StreamPlayer"), __easycom_1);
|
||||
return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
|
||||
vue.createElementVNode("button", {
|
||||
onClick: _cache[0] || (_cache[0] = (...args) => $options.onStartRecord && $options.onStartRecord(...args)),
|
||||
@@ -2390,24 +2312,23 @@ if (uni.restoreGlobal) {
|
||||
onCurrentDecibels: $options.onCurrentDecibels,
|
||||
onOnStop: $options.stopIt
|
||||
}, null, 8, ["onOnFrameRecorded", "onCurrentDecibels", "onOnStop"]),
|
||||
vue.createVNode(
|
||||
_component_sdx_StreamPlayer,
|
||||
{ ref: "aaa" },
|
||||
{
|
||||
default: vue.withCtx(() => [
|
||||
vue.createTextVNode("xx")
|
||||
]),
|
||||
_: 1
|
||||
/* STABLE */
|
||||
},
|
||||
512
|
||||
/* NEED_PATCH */
|
||||
),
|
||||
vue.createCommentVNode(' <sdx-StreamPlayer ref="aaa">xx</sdx-StreamPlayer> '),
|
||||
vue.createElementVNode("button", {
|
||||
onClick: _cache[2] || (_cache[2] = (...args) => $options.test && $options.test(...args))
|
||||
}, "接通电话")
|
||||
}, "接通电话"),
|
||||
vue.createElementVNode("view", {
|
||||
ref: "renderJSModule",
|
||||
pcmChunk: vue.wp($data.currentPCMChunk),
|
||||
"change:pcmChunk": _ctx.renderJS.appendPCMChunk,
|
||||
isStop: vue.wp($data.isStop),
|
||||
"change:isStop": _ctx.renderJS.stop,
|
||||
type: "renderjs",
|
||||
module: "renderJS"
|
||||
}, null, 8, ["pcmChunk", "change:pcmChunk", "isStop", "change:isStop"])
|
||||
]);
|
||||
}
|
||||
if (typeof block0 === "function")
|
||||
block0(_sfc_main$1);
|
||||
const PagesIndexIndex = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__scopeId", "data-v-1cf27b2a"], ["__file", "C:/Users/1/Desktop/testAudio/测试流式传输uniapp/pages/index/index.vue"]]);
|
||||
__definePage("pages/index/index", PagesIndexIndex);
|
||||
const _sfc_main = {
|
||||
|
||||
Reference in New Issue
Block a user