什么是Mozilla MediaRecorder的音频输出格式以及如何在Java(或Scala)中解码ogg格式

时间:2015-04-16 21:50:11

标签: java javascript audio ogg getusermedia

我正在使用新的(非标准)Mozilla MediaRecorder API录制用户语音。 Example logging of binary recording data

我认为格式是ogg。但除此之外,我怎么才能找到,更不用说配置音频数据是使用一个还是两个通道,帧速率是什么等等?

相关问题,可能大部分此类信息都是使用ogg格式在二进制blob中编码的,但如何在服务器上处理Java或Scala中的ogg文件格式? Java中的标准Sound API似乎不支持Ogg,我没有在Java或Scala中找到任何看起来很严肃的库。

1 个答案:

答案 0 :(得分:1)

我不认为帧速率适用于音频blob,但是从音频blob可以使用以下函数检索持续时间,channelCount和sampleRate。如果你不需要持续时间,你可以取消回调,用正常的返回函数检索其他两个细节。

function getAudioBlobDetails(blob, callback){
    var audioURL = window.URL.createObjectURL(blob);
    var audio = new Audio(audioURL);
    audio.onloadedmetadata = function(){
        var source = audioContext.createMediaElementSource(audio);
        callback({
            duration: audio.duration,
            channelCount: source.channelCount,
            sampleRate: source.context.sampleRate
        });
    };        
}

Fiddle Demo

关于java / scala库的第二部分我没有太多的想法,但你可以做的一件事是,在服务器中使用ffmpegogg文件转换为你的格式使用java库时更舒服。

编辑:

所以,如果您更喜欢wav格式,可以使用着名的mattdiamond/Recorderjs 来检索wav blob,用法如下:

wavRecorder.exportWAV( uploadBlobToServer); // uploadBlobToServer is the function that accepts blob as parameter.