我在JQuery中使用MediaRecorder进行录制,现在Safari中也支持。它必须被启用。
这工作。
下面的代码片段是采取的记录。抓取数据,然后将其发布到一个PHP文件,这是简单地写一个文件,并保存为MP3。
recordButton.addEventListener("click", toggleRecording);
function toggleRecording() {
if (recorder && recorder.state == "recording") {
recorder.stop();
gumStream.getAudioTracks()[0].stop();
$("#record").html('Record');
} else {
navigator.mediaDevices.getUserMedia({
audio: true
}).then(function(stream) {
gumStream = stream;
const chunks = [];
recorder = new MediaRecorder(stream);
recorder.ondataavailable = function(e) {
chunks.push(e.data);
const blob = new Blob(chunks, { type: 'audio/mpeg' });
var reader = new window.FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function () {
base64data = reader.result;
mp3 = reader.result.replace('data:audio/mpeg;base64,','');
var fd = new FormData();
fd.append('b',mp3);
fd.append('c',$("#company").val());
fd.append('d',$("#device").val());
$.ajax({
type: 'POST',
url: '/include/concierge/storeBlob.php',
data: fd,
processData: false,
contentType: false
}).done(function(data) {
$("#message-box").addClass("active-flyin");
$("#menu-hider").addClass("menu-hider-active flyin-hider");
$("#returnid").val(data);
});
}
};
recorder.start();
$("#record").html('Stop');
});
}
}
它被发布到一个PHP文件,在那里它是简单地做......。
file_put_contents($filename, base64_decode($blob));
然后我就像......一样调用这个文件。
<audio controls id='mess-".$d->id."' preload='none'>
<source src='".returnURI($d->filename)."' type='audio/mpeg'>
This text displays if the audio tag isn't supported.
</audio>
其中src是......。https:/my.digitalconciergehub.co.uktmpcompany1walkietalkie200103135121audio.mp3。
在Android、windows桌面浏览器中,这一切都能正常工作,上面的链接也能用。
在IOS和Mac Safari上就不行了。我猜测这是与MP3的格式有关?