Firefox 在mediaRecorder.start中接受时间片的功能检测(时间片)

Firefox 在mediaRecorder.start中接受时间片的功能检测(时间片),firefox,webrtc,feature-detection,getusermedia,web-mediarecorder,Firefox,Webrtc,Feature Detection,Getusermedia,Web Mediarecorder,许多浏览器的媒体流录制API实现都提供了一个MediaRecorder类来接受来自getUserMedia的流,压缩它们,并将它们作为blob交付。MediaRecorder提供了一种启动(时间片)方法。它开始压缩流,然后大约每隔时间片毫秒调用一个ondataavailable处理程序 至少这是理论。但是有些浏览器(我在看你,Firefox)只每隔半秒甚至整秒调用处理程序,尽管请求的timeslice值。我的特定应用程序需要更短的延迟,因此它不能使用具有该缺陷的浏览器 有没有一种干净的特征检测方

许多浏览器的媒体流录制API实现都提供了一个MediaRecorder类来接受来自getUserMedia的流,压缩它们,并将它们作为blob交付。MediaRecorder提供了一种
启动(时间片)
方法。它开始压缩流,然后大约每隔
时间片
毫秒调用一个
ondataavailable
处理程序

至少这是理论。但是有些浏览器(我在看你,Firefox)只每隔半秒甚至整秒调用处理程序,尽管请求的
timeslice
值。我的特定应用程序需要更短的延迟,因此它不能使用具有该缺陷的浏览器


有没有一种干净的特征检测方法可以快速解决这个问题?或者我必须查看用户代理字符串吗?

过窄的间隔将适得其反,并强制执行不必要的关键帧。这就是为什么Firefox的阈值较低。我在这里质疑这个用例,因为MediaRecorder是面向存储的,而不是实时的。在Chrome中,时间间隔与H.264或VP8/9中视频关键帧的频率无关。MediaRecorder在Chrome中的低延迟使用情况下确实工作得很好。时间间隔过窄会适得其反,并会导致不必要的关键帧。这就是为什么Firefox的阈值较低。我在这里质疑这个用例,因为MediaRecorder是面向存储的,而不是实时的。在Chrome中,时间间隔与H.264或VP8/9中视频关键帧的频率无关。MediaRecorder在Chrome的低延迟用例中确实工作得很好。