gpt4 book ai didi

video-capture - 如何阻止 mediarecorder 中的像素化伪像?

转载 作者:行者123 更新时间:2023-12-04 17:20:02 26 4
gpt4 key购买 nike

我们正在使用浏览器的 MediaRecorder 来记录用户的相机。我不明白为什么有些相机会经常记录伪影。并非所有相机都会发生这种情况。

这里是一些发生了什么的截图......

这是视频中的正常图像 enter image description here

然后在一瞬间它被像素化,然后又回到看起来像以前的图像。 enter image description here

这是一段包含此工件的视频的摘录 https://drive.google.com/file/d/1SYMBRjMlvOTO-LnlG5HLX0ncN3NyUXcc/view?usp=sharing

recorder = new MediaRecorder(local_media_stream, {
mimeType: encoding_options,
audioBitsPerSecond: 96000,
videoBitsPerSecond: 8000000,
});
recorder.ondataavailable = function(e) {
that.save_blob(e.data, blob_index);
blob_index++;
}
recorder.start(15000)

对于local_media_stream我只是抓取本地的音视频

    navigator.mediaDevices.getUserMedia({ audio: {
deviceId: { exact: currentMic.deviceId},
channelCount: 1,
noiseSuppression: options.echo_cancellation,
echoCancellation: options.echo_cancellation,
},
video: {
width: { ideal: $("#subscription_id").data("max-width") },
height: { ideal: $("#subscription_id").data("max-height") },
frameRate: 30,
deviceId: { exact: currentCam.deviceId }
}
})

最佳答案

产生这些视频压缩伪像的通常不是相机。它们具有视频压缩的性质,并且在某种程度上取决于计算机的能力。大多数视频帧都是所谓的“帧间帧”,保存着一帧和下一帧之间的压缩差异。要解码帧间需要解码它之前的所有帧。

这些帧间序列以“帧内”开始,也称为瞬时解码器刷新 (IDR) 帧。帧内可以单独解码。但需要权衡取舍:它们需要更多压缩视频数据。

当您要求 30 帧/秒时,您会隐含地限制每帧可以容纳多少数据。有时帧内帧需要降低其质量以使其数据适合时间间隔。

我的观点:您看到的 block 状现象是帧内。

对此你能做什么?老实说,MediaRecorder 对视频编码器的工作方式没有太多控制。所以,你可以调整的东西是相当小的。它们是:

  • 框架大小:考虑缩小它。 1080p 视频 (1920x1080) 可能太大了。尝试一些更小的东西。试试 960x540,甚至更小。

  • 帧速率:较慢的帧速率(如 15)会为每个帧分配更多带宽,因此帧内质量更高。降低帧速率。

  • 比特率。您正在使用 8 兆比特/秒。这对于基于浏览器的编码器来说非常大,可能太大了。它比许多互联网服务提供商的最大上传速度更快。尝试一些更小的东西。从 1 兆比特开始。 (您的高比特率要求可能会使某些计算机中的压缩硬件不堪重负。)

请记住,为在线流媒体压缩视频的人使用大型服务器,并且在这些服务器上压缩一分钟的视频可能需要十分钟或更长时间。他们经常使用 ffmpeg ,它有数百种调整压缩的方法。 MediaRecorder 实时执行。

此外,网络摄像头硬件的质量参差不齐。糟糕的网络摄像头有可乐瓶碎片作为镜头和破旧的传感器。好的是非常好的。没有一个达到专业视频设备的标准。但该设备要花费数千美元。

并且请记住,压缩视频更像 JPEG,而不是 PNG。它不适合编码高对比度静态图片。

高质量数字视频录制是计算的一个发达的子专业。如果您想要“尽可能最好的音频和视频”,您将不会使用网络浏览器/Javascript/getUserMedia/MediaRecorder。您将使用 native (下载并安装)应用程序,例如 OBS Studio .它使您可以更好地控制捕获和压缩过程。

如果您在 2021 年初使用浏览器中嵌入的捕获/压缩技术,您实际上将被限制在每秒几兆比特和一些分辨率限制。

关于video-capture - 如何阻止 mediarecorder 中的像素化伪像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66712635/

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