Browse Source

测试webrtc音频

caner 1 year ago
parent
commit
28069c6745
2 changed files with 19 additions and 4 deletions
  1. 4 2
      src/pages/room/index.vue
  2. 15 2
      src/services/webrtc.service.ts

+ 4 - 2
src/pages/room/index.vue

@@ -42,7 +42,8 @@ const remoteVideo = ref(null as unknown as HTMLVideoElement)
 const RTC = new WebRtcService()
 const RTC = new WebRtcService()
 const store = useStore()
 const store = useStore()
 const mqtt = inject('MQTT') as Any
 const mqtt = inject('MQTT') as Any
-const menuList = shallowRef([ { name: '信号', value: 0, component: defineAsyncComponent(() => import('@/components/signal.vue')) },
+const menuList = shallowRef([
+  { name: '信号', value: 0, component: defineAsyncComponent(() => import('@/components/signal.vue')) },
   { name: '电量', value: 0, component: defineAsyncComponent(() => import('@/components/battery.vue')) },
   { name: '电量', value: 0, component: defineAsyncComponent(() => import('@/components/battery.vue')) },
   {
   {
     name: '录音',
     name: '录音',
@@ -54,7 +55,8 @@ const menuList = shallowRef([ { name: '信号', value: 0, component: defineAsync
   },
   },
   {
   {
     name: '静音', value: 0, callBack: (mute: boolean) => RTC.muteRemoteAudio(mute), component: defineAsyncComponent(() => import('@/components/audio.vue'))
     name: '静音', value: 0, callBack: (mute: boolean) => RTC.muteRemoteAudio(mute), component: defineAsyncComponent(() => import('@/components/audio.vue'))
-  } ])
+  }
+])
 const gauge = ref({ speed: 0, num: 0 })
 const gauge = ref({ speed: 0, num: 0 })
 
 
 watch(() => store.mqtt_message, async (value: { type: string, data?: RTCSessionDescriptionInit }) => {
 watch(() => store.mqtt_message, async (value: { type: string, data?: RTCSessionDescriptionInit }) => {

+ 15 - 2
src/services/webrtc.service.ts

@@ -44,8 +44,20 @@ export default class WebRtcService {
       // listen track
       // listen track
       this.Peer.ontrack = (evt) => {
       this.Peer.ontrack = (evt) => {
         console.log('track', evt)
         console.log('track', evt)
-        DOM.srcObject = evt.streams[0]
-        if (evt.track.kind === 'audio') this.audioTack = evt.track
+        if (evt.track.kind === 'video') {
+          DOM.srcObject = evt.streams[0]
+        }
+        if (evt.track.kind === 'audio') {
+          console.log('audio')
+          this.audioTack = evt.track
+          const audio = new Audio()
+          audio.srcObject = evt.streams[0]
+          setTimeout(() => {
+            console.log('audio-play')
+            audio.play()
+          }, 2000)
+          // audio.play()
+        }
       }
       }
 
 
       // listen changestate·
       // listen changestate·
@@ -60,6 +72,7 @@ export default class WebRtcService {
         // ICE连接成功
         // ICE连接成功
         if (state === 'connected') {
         if (state === 'connected') {
           this.store.setMqttMessage({ type: 'WebRtcConnected', data: null })
           this.store.setMqttMessage({ type: 'WebRtcConnected', data: null })
+          DOM.play()
         }
         }
       }
       }