我正在使用MediaRecorder API 和Canvas captureStream方法在浏览器中对画布的 VP8 视频流进行编码。该数据通过二进制 Web 套接字发送到 FFmpeg。
var outputCaptureStream = $('canvas')[0].captureStream(30);
var mediaRecoder = new MediaRecoder(outputCaptureStream, {
mimeType: 'video/webm'
});
mediaRecorder.ondataavailable = function (e) {
ffmpegStdin.write(e.data);
}
mediaRecoder.start(1000);
出于某种原因,流似乎随机切换到较低分辨率的中流。FFmpeg 对此并不满意:
输入流 #0:0 帧从 size:1280x720 fmt:yuv420p 更改为 size:1024x576 fmt:yuv420p
[vp8 @ 0x2a02c00] 未实现升级。将您的 FFmpeg 版本更新到 Git 的最新版本。如果问题仍然存在,则意味着您的文件具有尚未实现的功能。[vp8 @ 0x2a02c00] 如果您需要帮助,请将此文件的示例上传到ftp://upload.ffmpeg.org/incoming/并联系 ffmpeg-devel 邮件列表。(ffmpeg-devel@ffmpeg.org)
我怀疑这与 CPU 使用率过高有关,并且 Firefox 试图通过缩小视频来提供帮助。我的问题:
- Firefox 是否会即时缩小视频?
- 如果是这样,什么条件导致这种情况发生?(CPU 负载?流背压?)
- 是否可以阻止 Firefox 这样做?
- 对于我缺少的这种行为,是否有不同的解释?