Audio 在javascript中将.wav文件转换为.ogg
我正在尝试从浏览器捕获用户的音频输入。我用WAV做了,但是文件太大了。我的一个朋友告诉我OGG文件要小得多。 有人知道如何将WAV转换为OGG吗? 我也有原始数据缓冲区,我真的不需要转换。但我只需要OGG编码器 以下是WAV编码器,来自:Audio 在javascript中将.wav文件转换为.ogg,audio,web,ogg,Audio,Web,Ogg,我正在尝试从浏览器捕获用户的音频输入。我用WAV做了,但是文件太大了。我的一个朋友告诉我OGG文件要小得多。 有人知道如何将WAV转换为OGG吗? 我也有原始数据缓冲区,我真的不需要转换。但我只需要OGG编码器 以下是WAV编码器,来自: 对那些否决了这篇文章的人来说,OGG有什么建议吗?如果不花时间深入了解为什么这个问题是“坏”的,那么否决投票的问题真的是没有效果的。我认为这个问题是有价值的,海报显然花了一些时间试图自己解决这个问题。实际上,的目的正是为了实现这类功能,但目前还没有达到这一目的
对那些否决了这篇文章的人来说,OGG有什么建议吗?如果不花时间深入了解为什么这个问题是“坏”的,那么否决投票的问题真的是没有效果的。我认为这个问题是有价值的,海报显然花了一些时间试图自己解决这个问题。实际上,的目的正是为了实现这类功能,但目前还没有达到这一目的: 本规范描述了用于在web应用程序中处理和合成音频的高级JavaScript API。主要范例是音频路由图,其中许多AudioNode对象连接在一起以定义整体音频渲染。实际的处理将主要发生在底层实现(通常是优化的汇编/C/C++代码),但是直接<强> JavaScript处理和合成也支持>/P> 下面是一个关于当前w3c的声明,它提出了以下几点:
- 在JavaScript中处理音频时,要获得可靠、无故障的音频,同时实现合理的低延迟,尤其是在处理器负载较重的情况下,这是一项极具挑战性的任务
- JavaScript比重优化C++代码慢得多,不能利用SSE优化和多线程,这对当今处理器的良好性能至关重要。与JavaScript相比,优化的本机代码处理FFT的速度可以快20倍。对于大量音频源的卷积和3D空间化等繁重的音频处理,它的效率不够
- setInterval()和XHR处理将占用音频处理的时间。在相当复杂的游戏中,游戏物理和图形需要一些JavaScript资源。这带来了挑战,因为音频渲染是期限驱动的(以避免出现故障并获得足够低的延迟)。 JavaScript不在实时处理线程中运行,因此可以被系统上运行的许多其他线程抢占
- 垃圾收集(以及Mac OS X上的自动释放池)可能会在JavaScript线程上造成不可预知的延迟
- 可以在主线程上运行多个JavaScript上下文,从而从执行处理的上下文中节省时间
- 其他代码(JavaScript除外)如页面呈现在主线程上运行
- 可以在JavaScript线程上获取锁并分配内存。这可能会导致额外的线程抢占
- 如今的移动设备处理器性能相对较差,并且存在功耗/电池寿命问题,因此这些问题更加困难李>
由于提问者主要是为了音频压缩,他们可能也对音频压缩感兴趣。这个问题让我抓狂,因为我还没有看到任何人提出一个真正干净的解决方案,所以我提出了自己的库: 基本用法
audioRecord.requestDevice(function(recorder){
// Request user permission for microphone access
recorder.record(); // Start recording
recorder.stop(); /Stop recording
recorder.exportOGG(function(oggBlob){
//Here's your OGG file
});
recorder.exportMP3(function(mp3Blob){
//Here's your mp3 file
});
recorder.exportWAV(function(wavBlob){
//Here's your WAV file
});
});
使用连续mp3编码选项,完全在浏览器中捕获和编码音频输入是完全合理的,跨浏览器,无需服务器或本机代码
演示:
边缘仍然粗糙,但我会尝试清理/修复它。好的,这可能不是一个直接的答案,因为它没有说明如何将
.wav
转换为.ogg
。再说一次,当您可以直接打开.ogg
文件时,为什么还要麻烦转换呢。这取决于具体情况,但支持WebAudio的浏览器通常也有此功能(Firefox 25+和Chrome 47+)
我从vorbis找到了.ogg编码器源代码。但是JS中没有任何东西,我不能在JS+1中使用相同的算法,因为没有必要对此进行否决。+1同意。这对谁有帮助?谢谢你们。恢复对stackoverflow.com的信任
我下了网
非常感谢@jtrick。Chrome原生客户端似乎是我的解决方案。转换为ogg的整个想法不是发送巨大的wav文件(我想这会在服务器上整理ffmpeg)
audioRecord.requestDevice(function(recorder){
// Request user permission for microphone access
recorder.record(); // Start recording
recorder.stop(); /Stop recording
recorder.exportOGG(function(oggBlob){
//Here's your OGG file
});
recorder.exportMP3(function(mp3Blob){
//Here's your mp3 file
});
recorder.exportWAV(function(wavBlob){
//Here's your WAV file
});
});