Browse Source

修改部分问题

wolyshaw 3 years ago
parent
commit
dabe631fe4

+ 1 - 1
package.json

@@ -20,7 +20,7 @@
     "vue": "^3.2.25",
     "vue-qr": "^3.2.4",
     "vue-router": "^4.0.12",
-    "vue-virtual-scroller": "^2.0.0-alpha.1",
+    "vue-virtual-scroller": "^2.0.0-alpha.1"
   },
   "devDependencies": {
     "@types/js-cookie": "^3.0.1",

+ 2 - 2
src/components/live-broadcast/action-bar.tsx

@@ -50,7 +50,7 @@ export default defineComponent({
               <SvgIcon
                 onClick={() => {
                   this.barStatus.camera = !this.barStatus.camera
-                  RuntimeUtils.toggleCamera()
+                  RuntimeUtils.toggleDevice('camera')
                 }}
                 name={this.isCameraDisabled ? 'bar-camera-disabled' : 'bar-camera'}
                 style={{
@@ -151,7 +151,7 @@ export default defineComponent({
             <SvgIcon
               onClick={() => {
                 this.barStatus.microphone = !this.barStatus.microphone
-                RuntimeUtils.toggleMicrophone()
+                RuntimeUtils.toggleDevice('microphone')
               }}
               name={this.isMicrophoneDisabled ? 'bar-mike-disabled' : 'bar-mike'}
               style={{

+ 1 - 1
src/components/live-broadcast/index.tsx

@@ -45,7 +45,7 @@ export default defineComponent({
         // runtime.mediaStreamTrack = mediaStreams.getTracks()
         // await RuntimeUtils.setTrack([microphoneAudioTrack], 'microphone')
         // w_3fi4PXQcooe5_VUseReE
-        const join = await RuntimeUtils.joinRoom('w_3fi4PXQcooe5_VUseReE', RTC.RCLivingType.VIDEO, {
+        const join = await RuntimeUtils.joinRoom('LIVE-2112263-12345', RTC.RCLivingType.VIDEO, {
           onMessageReceive(name, content) {
             console.log(name, content)
           },

+ 20 - 28
src/components/live-broadcast/runtime.ts

@@ -334,7 +334,8 @@ export const startLive = async () => {
  * 关闭直播
  */
 export const closeLive = async () => {
-  removeMedia(runtime.mediaStreams, runtime.mediaStreamTrack)
+  // removeMedia(runtime.mediaStreams, runtime.mediaStreamTrack)
+  // request.post('')
   runtime.videoStatus = 'stopped'
   for (const key in runtime.activeTracks) {
     if (Object.prototype.hasOwnProperty.call(runtime.activeTracks, key)) {
@@ -352,7 +353,7 @@ export const closeLive = async () => {
 export const loopSyncLike = async () => {
   if (runtime.likeCount !== runtime.lastLikeCount) {
     try {
-      await request.post('/api/live/like', {})
+      await request.post('/api-web/imLiveBroadcastRoom/syncLike', {})
       runtime.lastLikeCount = runtime.likeCount
     } catch (error) {}
   }
@@ -404,36 +405,27 @@ export const sendMessage = async (msg: any, type: SendMessageType = 'text') => {
   await RongIMLib.sendMessage(conversation, message)
 }
 
-export const toggleMicrophone = async () => {
-  if (runtime.videoStatus === 'liveing' && runtime.joinedRoom) {
-    if (runtime.activeTracks['microphone']) {
-      await removeTrack([runtime.activeTracks['microphone']] as RTC.RCLocalTrack[], 'microphone')
-    } else {
-      const track = await getTrack('microphone')
-      await setTrack([track], 'microphone')
-    }
+export const openDevice = async (trackType: TrackType, needPublish = true) => {
+  const track = await getTrack(trackType)
+  await setTrack([track], trackType, needPublish)
+  if (runtime.videoRef) {
+    track.play(runtime.videoRef)
   }
 }
 
-export const toggleCamera = async () => {
-  const track = runtime.activeTracks['camera']
-  console.log(track)
+export const closeDevice = async (trackType: TrackType, needPublish = true) => {
+  const track = runtime.activeTracks[trackType]
+  await removeTrack([track] as RTC.RCLocalTrack[], trackType, needPublish)
+  track?.destroy()
+}
+
+export const toggleDevice = async (trackType: TrackType) => {
+  const track = runtime.activeTracks[trackType]
+  const needPublish = runtime.videoStatus === 'liveing'
   if (track) {
-    if (runtime.videoStatus === 'liveing') {
-      await removeTrack([track] as RTC.RCLocalTrack[], 'camera')
-    }
-    track.destroy()
-    if (runtime.videoRef) {
-      // console.log(runtime.videoRef.srcObject.removeTrack(runtime.videoRef.srcObject?.getVideoTracks?.()[0]))
-      // runtime.videoRef.srcObject = null
-    }
+    closeDevice(trackType, needPublish)
   } else {
-    const track = await getTrack('camera')
-    if (runtime.videoStatus === 'liveing') {
-      await setTrack([track], 'camera')
-    }
-    if (runtime.videoRef) {
-      track.play(runtime.videoRef)
-    }
+    openDevice(trackType, needPublish)
   }
 }
+

+ 4 - 5
src/pages/home/header/index.tsx

@@ -3,7 +3,7 @@ import { ElDropdownMenu, ElDropdown, ElDropdownItem, ElMessage } from "element-p
 import router from "/src/router";
 import styles from './index.module.less';
 import request from '/src/helpers/request';
-import runtime from "/src/components/live-broadcast/runtime";
+import runtime, * as RuntimeUtils from "/src/components/live-broadcast/runtime";
 import { removeToken } from "/src/utils/auth";
 import { removeMedia } from '/src/components/live-broadcast/helpers'
 
@@ -12,9 +12,8 @@ export default defineComponent({
     async loginOut() {
       try {
         await request.post('/api-auth/exit', { data: {} });
-        removeMedia(runtime.mediaStreams, runtime.mediaStreamTrack)
-        runtime.activeTracks.camera?.destroy()
-        runtime.activeTracks.microphone?.destroy()
+        RuntimeUtils.closeDevice('camera')
+        RuntimeUtils.closeDevice('microphone')
         ElMessage.success('退出成功');
         // console.log(this)
         // this.$message.success('退出成功');
@@ -56,4 +55,4 @@ export default defineComponent({
       </div>
     )
   }
-})
+})