|
|
@@ -8,47 +8,47 @@
|
|
|
<script setup lang="ts">
|
|
|
import { ref, watch } from 'vue'
|
|
|
|
|
|
-const chunks = ref([] as Blob[])
|
|
|
+// const chunks = ref([] as Blob[])
|
|
|
const mediaRecorder = ref(null as null | MediaRecorder)
|
|
|
const show = ref(false)
|
|
|
|
|
|
const props = defineProps<{
|
|
|
audioState: boolean
|
|
|
}>()
|
|
|
-const emit = defineEmits<{(evt: 'callBack', value: Blob): void;
|
|
|
-}>()
|
|
|
+// const emit = defineEmits<{(evt: 'callBack', value: Blob): void;
|
|
|
+// }>()
|
|
|
|
|
|
// 初始化音频
|
|
|
-async function initRecorder() {
|
|
|
- try {
|
|
|
- const stream = await navigator.mediaDevices.getUserMedia({ audio: true })
|
|
|
- mediaRecorder.value = new MediaRecorder(stream)
|
|
|
+// async function initRecorder() {
|
|
|
+// try {
|
|
|
+// const stream = await navigator.mediaDevices.getUserMedia({ audio: true })
|
|
|
+// mediaRecorder.value = new MediaRecorder(stream)
|
|
|
|
|
|
- // 事件监听
|
|
|
- mediaRecorder.value.ondataavailable = (e: { data: Blob }) => {
|
|
|
- chunks.value.push(e.data)
|
|
|
- }
|
|
|
- mediaRecorder.value.onstart = () => {
|
|
|
- chunks.value = []
|
|
|
- }
|
|
|
- mediaRecorder.value.onstop = () => {
|
|
|
- const blob = new Blob(chunks.value, {
|
|
|
- type: 'audio/webm;codecs=opus'
|
|
|
- })
|
|
|
- emit('callBack', blob)
|
|
|
- }
|
|
|
- } catch (error: any) {
|
|
|
- show.value = false
|
|
|
- mediaRecorder.value = null
|
|
|
- let txt = '不支持的音频'
|
|
|
- if (error.toString().includes('getUserMedia')) {
|
|
|
- txt = '不支持webrtc音频'
|
|
|
- } else {
|
|
|
- txt = '未获取到音频设备'
|
|
|
- }
|
|
|
- new window.Notification(txt)
|
|
|
- }
|
|
|
-}
|
|
|
+// // 事件监听
|
|
|
+// mediaRecorder.value.ondataavailable = (e: { data: Blob }) => {
|
|
|
+// chunks.value.push(e.data)
|
|
|
+// }
|
|
|
+// mediaRecorder.value.onstart = () => {
|
|
|
+// chunks.value = []
|
|
|
+// }
|
|
|
+// mediaRecorder.value.onstop = () => {
|
|
|
+// const blob = new Blob(chunks.value, {
|
|
|
+// type: 'audio/webm;codecs=opus'
|
|
|
+// })
|
|
|
+// emit('callBack', blob)
|
|
|
+// }
|
|
|
+// } catch (error: any) {
|
|
|
+// show.value = false
|
|
|
+// mediaRecorder.value = null
|
|
|
+// let txt = '不支持的音频'
|
|
|
+// if (error.toString().includes('getUserMedia')) {
|
|
|
+// txt = '不支持webrtc音频'
|
|
|
+// } else {
|
|
|
+// txt = '未获取到音频设备'
|
|
|
+// }
|
|
|
+// new window.Notification(txt)
|
|
|
+// }
|
|
|
+// }
|
|
|
|
|
|
watch(() => props.audioState, (v) => {
|
|
|
if (!mediaRecorder.value) return
|