我使用mediaStreamRecorder记录ogg文件并通过Websocket将其发送到我的API并且它与WebM不兼容,它在其他浏览器中工作正常,但在chrome中,我的api说文件是webM,并且抛出错误。
这是我的recorder.js文件的一部分:
mediaRecorder.onstop = function(e) {
if (audioarray.length>=2){
var blob = new Blob(audioarray, { 'type' : 'audio/ogg; codecs=opus' });
var blobURL = URL.createObjectURL(blob);
blobsize = blob.size;
reader.readAsDataURL(blob);
reader.onload = function(event){
codedaudio = reader.result;
console.log("File size: "+blobsize);
audiourl = event.target.result;
//cut Base64 code to the last ","
audiomsg = codedaudio.substring(codedaudio.lastIndexOf(",")+1,codedaudio.length);
console.log("Audio length: "+audioarray.length);
sendMessage(audiomsg,'right','audio',blobURL);
console.log("MediaStreamrecorder stopped");
audioarray = [];
};
}else{
// ToDo in short audio case
console.log("audio is too short, it will not be sent")
console.log("Audio length: "+audioarray.length);
audioarray = [];
};
}
这里发送ogg的部分代码:
sendMessage = function (text,side,type,filepath) {
webmessage = {
message:text,
type: type
}
message_side = side;
//output debug
if(text!=""){
ws.send(JSON.stringify(webmessage));
if (output==true){
console.log(webmessage);
}
}
};
¿有没有办法将它作为ogg发送到chrome?。
答案 0 :(得分:0)
与Firefox和可能的其他浏览器不同,Chrome doesn't support recording audio-only in an ogg container。
您可以使用以下方式测试支持:
MediaRecorder.isTypeSupported("audio/ogg")