Browse Source

优化拍摄

wkw 1 month ago
parent
commit
0a406a713c
1 changed files with 5 additions and 0 deletions
  1. 5 0
      src/views/im/chat/components/VideoRecorder/index.vue

+ 5 - 0
src/views/im/chat/components/VideoRecorder/index.vue

@@ -108,6 +108,7 @@ const confirmSend = () => {
 };
 
 const openVideo = async () => {
+  let isDrawing = false;
   recordTime.value = 0;
   const stream = await navigator.mediaDevices.getUserMedia({
     video: { facingMode: 'environment' },
@@ -123,12 +124,14 @@ const openVideo = async () => {
   canvas.height = settings.height || 480;
 
   function drawFrame() {
+    if (!isDrawing) return; // 停止绘制
     ctx.save();
     ctx.scale(-1, 1);
     ctx.drawImage(videoEl.value, -canvas.width, 0, canvas.width, canvas.height);
     ctx.restore();
     requestAnimationFrame(drawFrame);
   }
+  isDrawing = true;
   drawFrame();
 
   const canvasStream = canvas.captureStream(30);
@@ -141,6 +144,8 @@ const openVideo = async () => {
   };
 
   recorder.onstop = () => {
+    // 停止绘制
+    isDrawing = false;
     if (recordTime.value < 1) {
       recordTime.value = 0;
       return;