shuisheng hace 1 año
padre
commit
d230ae0e52
Se han modificado 4 ficheros con 35 adiciones y 3 borrados
  1. 10 1
      src/hooks/use-websocket.ts
  2. 6 1
      src/hooks/webrtc/srs.ts
  3. 19 0
      src/utils/index.ts
  4. 0 1
      src/utils/network/webRTC.ts

+ 10 - 1
src/hooks/use-websocket.ts

@@ -46,7 +46,11 @@ import {
   WsStartRemoteDesk,
   WsUpdateJoinInfoType,
 } from '@/types/websocket';
-import { createNullVideo, handleUserMedia } from '@/utils';
+import {
+  createNullVideo,
+  handleUserMedia,
+  setVideoTrackContentHints,
+} from '@/utils';
 import {
   WebSocketClass,
   prettierReceiveWsMsg,
@@ -827,6 +831,11 @@ export const useWebsocket = () => {
         ) {
           return;
         }
+        setVideoTrackContentHints(
+          // @ts-ignore
+          canvasVideoStream.value,
+          'detail'
+        );
         if (data.live_room.type === LiveRoomTypeEnum.wertc_live) {
           updateWebRtcLiveConfig({
             roomId: roomId.value,

+ 6 - 1
src/hooks/webrtc/srs.ts

@@ -33,10 +33,15 @@ export const useWebRtcSrs = () => {
       receiver: string;
       videoEl: HTMLVideoElement;
     }) => {
-      return new WebRTCClass({
+      console.log({
         maxBitrate: currentMaxBitrate.value,
         maxFramerate: currentMaxFramerate.value,
         resolutionRatio: currentResolutionRatio.value,
+      });
+      return new WebRTCClass({
+        // maxBitrate: currentMaxBitrate.value,
+        // maxFramerate: currentMaxFramerate.value,
+        // resolutionRatio: currentResolutionRatio.value,
         isSRS: true,
         roomId: roomId.value,
         videoEl: data.videoEl,

+ 19 - 0
src/utils/index.ts

@@ -2,6 +2,25 @@
 import { computeBox, getRangeRandom } from 'billd-utils';
 import sparkMD5 from 'spark-md5';
 
+/**
+ * music,该曲目应被视为包含音乐。设置该值时 MediaStreamTrack.kind的值必须为"audio"。
+ * speech,该轨道应被视为包含语音数据。设置该值时 MediaStreamTrack.kind的值必须为"audio"。
+ * speech-recognition,该轨道应被视为包含用于机器语音识别的数据。设置该值时 MediaStreamTrack.kind的值必须为"audio"。
+ * detail,应将曲目视为视频细节格外重要。例如,带有文本内容、绘画或线条艺术的演示文稿或网页。设置该值时 MediaStreamTrack.kind的值必须为"video"。
+ * text,轨道应该被视为视频细节特别重要,并且明显的锐利边缘和颜色一致的区域可能经常出现。例如,带有文本内容的演示文稿或网页。设置该值时 MediaStreamTrack.kind的值必须为"video"。
+ * motion,应将轨道视为包含运动很重要的视频。例如,网络摄像头视频、电影或视频游戏。设置该值时 MediaStreamTrack.kind的值必须为"video"。
+ */
+export function setVideoTrackContentHints(
+  stream: MediaStream,
+  hint: 'detail' | 'text' | 'motion'
+) {
+  const tracks = stream.getVideoTracks();
+  tracks.forEach((track) => {
+    track.contentHint = hint;
+    console.log('setVideoTrackContentHints', track.id, hint);
+  });
+}
+
 /**
  * 将base64转换为file
  */

+ 0 - 1
src/utils/network/webRTC.ts

@@ -283,7 +283,6 @@ export class WebRTCClass {
       console.log('track事件的stream', event.streams[0]);
       console.log('track事件的视频轨', event.streams[0].getVideoTracks());
       console.log('track事件的音频轨', event.streams[0].getAudioTracks());
-
       const stream = event.streams[0];
       this.localStream = stream;
       const appStore = useAppStore();