javascript - 如何在 javascript 中设置音频 blob 的编解码器、采样率和比特率?
问题描述
我刚刚创建了一个blob:
const audioBlob = new Blob(audioChunks, { 'type' : 'audio/wav; codecs=0' });
并以base64格式发送到后端。我使用以下代码将其保存到名为“test.wav”的文件中:
await writeFile('./temp/test.wav', Buffer.from(filename.replace('data:audio/wav; codecs=0;base64,', ''), 'base64'), 'base64');
在输出“test.wav”文件中,我将编解码器作为 opus,比特率 = N/A 和采样率 = 48000。我想将这些值更改为 codec=wav、bitrate=256kbps 和 sample rate=16000。如何在节点(或角度)中实现它?
这是我的前端代码的链接。
解决方案
此行仅提供 mime 信息,但不影响实际输出
const audioBlob = new Blob(audioChunks, { 'type' : 'audio/wav; codecs=0' });
要选择正确的音频编解码器和比特率,请使用以下选项开始录制
var options = {
audioBitsPerSecond : 128000,
mimeType : 'audio/ogg'
}
var mediaRecorder = new MediaRecorder(stream, options);
据我所知WebRTC默认支持ogg编解码器,因此它是跨浏览器兼容的
稍后,在后端,您需要将ogg
音频流转换为您想要使用的任何其他内容,例如fluent-ffmpeg
推荐阅读
- reactjs - TypeError: TypeError: (0, _reactRedux.useSelector) 不是函数
- android - :当 getView() 为 null 时,即 onCreateView() 之前或 onDestroyView() 之后,无法访问 Fragment View 的 LifecycleOwner
- amazon-web-services - 如何通过忽略未使用的资源从 aws cli 创建 aws java lambda 函数?
- c# - 使用 WCF 和 .NET 调用 Web 服务
- python - 多线程的引入并没有减少 Python 程序的执行时间
- laravel - Laravel where() 在 whereHas() 中访问其他边表列
- swift - 失败:文件名太长域:NSPOSIXErrorDomain xcode
- android - 如何混淆组装的apk?
- mysql - 计算多列中最大值的平均值
- python - 如何配置 Anaconda 环境以从单独的自定义通道中提取特定包