gpt4 book ai didi

google-chrome - 如何使用 chrome.tabCapture.capture 生成无损视频文件?

转载 作者:行者123 更新时间:2023-12-04 22:50:20 25 4
gpt4 key购买 nike

问题描述:

chrome.tabCapture.capture 会生成一个流,我使用MediaRecorder来操作。
但 MediaRecorder 只支持 webm 视频格式。
Webm 视频格式将压缩我录制的视频

如果我录制了标签页,10 秒内没有任何变化(包括没有鼠标移动,没有声音),整个网页还是静止的。那么最终的 webm 视频文件将只有一帧,甚至没有一秒钟。

有没有办法解决这个问题?因为我不想要压缩视频

核心代码:

let mediaRecorder = '';

chrome.tabCapture.capture(captureConfig, stream => {
if (stream === null) {
chrome.tabs.sendMessage(id, {
error: chrome.runtime.lastError
});
return false;
}

const recordedBlobs: BlobPart[] = [];
mediaRecorder = new MediaRecorder(stream, {
videoBitsPerSecond: 2500000,
mimeType: 'video/webm;codecs=vp9'
});

mediaRecorder.ondataavailable = event => {
if (event.data && event.data.size > 0) {
recordedBlobs.push(event.data);
}
};

mediaRecorder.onstop = () => {
const superBuffer = new Blob(recordedBlobs, {
type: 'video/webm'
});

const link = document.createElement('a');
link.href = URL.createObjectURL(superBuffer);
link.setAttribute('download', `${filename}.webm`);
link.click();
};

mediaRecorder.start();
});

const stop = () => {
mediaRecorder.stop();
mediaRecorder.stream.getTracks().forEach(track => {
track.stop();
});
}

我用的是chromium,可以用chrome代替,只要能解决这个问题。
我也试过ffmpeg,但还是不行,那些丢失的帧似乎无法恢复。

最佳答案

我有一个类似的问题,添加 videoConstraints帮助。如果此解决方案对您不起作用,请告诉我,我会尽力解决。

附言startStream是一个回调函数。

chrome.tabCapture.capture({
audio: false,
video: true,
videoConstraints: {
mandatory: {
chromeMediaSource: 'tab',
minWidth: 640,
maxWidth: 640,
minHeight: 420,
maxHeight: 420
}
}
}, startStream )

关于google-chrome - 如何使用 chrome.tabCapture.capture 生成无损视频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54803703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com