javascript - 如何在 HQ 音频旁边录制最低比特率的屏幕共享视频?
问题描述
我一直在探索一些system
通过 Chrome 在 PC 上录制音频的方法,并且我已经成功地使用了 MediaRecorder API。我最终得到了共享屏幕的 webm 文件。只要用户也点击按钮分享音频,效果就很好。
问题:我不想录制视频部分。我还没有找到一种方法来“只”录制音频——看来它必须录制视频+音频才能工作。现在我必须录制视频,如何应用媒体约束使屏幕共享视频的占用空间尽可能小,从而保持较低的内存和 CPU 需求?
这些录音的长度从 2 秒到 15 分钟不等。
const screenSharingConstraints = {
video: {
width: 160
},
audio: true
}
navigator.mediaDevices.getDisplayMedia(screenSharingConstraints()).then(onSuccess, onMediaStreamError);
这是我对流所做的事情:
let onSuccess = function (stream) {
var options = {audioBitsPerSecond : 32000, mimeType : encoding_mimetype, videoBitsPerSecond : 250}
const mediaRecorder = new MediaRecorder(stream, options);
在运行它时,我仍然得到一个巨大的屏幕共享尺寸。如何在 JavaScript 的定义中使其尽可能小?
MediaRecorder 文档 https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder 媒体约束 https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints
解决方案
为什么不只使用音频?
const screenSharingConstraints = {
audio: true
}
应该只提供音频输出。如果您担心默认设置的带宽:
var constraints = { audio: {sampleRate: 11025},
};
将为您提供 11 KBPS 的音频(显然可以根据需要更改参数)。
如果你希望文件是视频,你可以让宽高尽可能小,但也可以让帧率达到 1 KBPS(下面使用 JS 变量的例子):
var constraints = { audio: {sampleRate: audioBitrate},
video:{
width: { min: 100, ideal: width, max: 1920 },
height: { min: 100, ideal: height, max: 1080 },
frameRate: {ideal: framerate}
}
};
我在https://livestream.streamclarity.com有一个用于视频(带有可调节参数)的工作示例,在此处输入链接描述,代码在GitHub 上。直播的后端是api.video
推荐阅读
- python-3.x - 将字符串数组转换为二维 numpy 数组
- docker - 如何为 2 个单独的 VM 创建 2 个 docker-compose 文件?
- c++ - 为什么 C++23 string::resize_and_overwrite 将操作作为右值调用?
- checkpoint - 检查点 IPS 警报不包含任何信息
- compiler-construction - 如何在 LLVM 中获取 O1、O2、O3 的通行证?
- c# - 如何查询/将数据转换为所需的格式
- python - Tesseract,openCV,python:如何获取句子或同一行文本的边界框?
- html - 离开页面错误之前的角度警告
- python - Tensorflow 联合对象不可下标
- php - 内含值