|
@@ -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;
|