我正在使用新的(非标准)Mozilla MediaRecorder API录制用户语音。
我认为格式是ogg。但除此之外,我怎么才能找到,更不用说配置音频数据是使用一个还是两个通道,帧速率是什么等等?
相关问题,可能大部分此类信息都是使用ogg格式在二进制blob中编码的,但如何在服务器上处理Java或Scala中的ogg文件格式? Java中的标准Sound API似乎不支持Ogg,我没有在Java或Scala中找到任何看起来很严肃的库。
答案 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
});
};
}
关于java / scala库的第二部分我没有太多的想法,但你可以做的一件事是,在服务器中使用ffmpeg
将ogg
文件转换为你的格式使用java库时更舒服。
所以,如果您更喜欢wav
格式,可以使用着名的mattdiamond/Recorderjs
来检索wav blob,用法如下:
wavRecorder.exportWAV( uploadBlobToServer); // uploadBlobToServer is the function that accepts blob as parameter.