0

나는 모바일 사파리에서 오디오를 녹음하고 재생하는 데 어려움을 겪고있다.(오디오) 버퍼를 BLOB로 변환하여 재생하는 방법

이 근원은 절대적으로 전설적입니다.
onaudioprocess not called on ios11

나는 오디오 데이터의 덩어리가오고 볼 수 있습니다 ...

// get Buffers (Essentially a Uint8Array DataView of the same Float32 values) 
var chunks = [] 
micStream.on('data', function(chunk) { 
    var raw = MicrophoneStream.toRaw(chunk) 
    chunks.push(raw) 
}); 

function replay(){ 
    var blob = new Blob(chunks, { 'type' : 'audio/webm;codecs=opus' }); 
    var blobURL = window.URL.createObjectURL(blob) 
    var audio = new Audio(); 
    audio.src = blobURL 
    audio.play() 
} 

하지만 덩어리가 재생을 만들 수 없습니다.

어떻게 원시 오디오 데이터를 BLOB로 변환하고 재생할 수 있습니까?
그리고 어떤 mineType도 사용하지 않아도됩니다.

내가 MediaRecorder API를 사용할 수 있는지

,

이 불행하게도 MediaRecorder의 API를 지원하지 않는 데스크톱 크롬하지만 사파리에서 작동
var chunks = [] 
mediaRecorder.ondataavailable = (event) => { 
    chunks.push(event.data); 
} 
function replay(){ 
    var blob = new Blob(chunks, { 'type' : 'audio/webm;codecs=opus' }); 
    var blobURL = window.URL.createObjectURL(blob) 
    var audio = new Audio(); 
    audio.src = blobURL 
    audio.play() 
} 

.

누군가 나를 도울 수 있습니까?

미리 감사드립니다.

답변

0

당신은 GitHub의에 Recorderjs 참조 할 수 있습니다 : https://github.com/mattdiamond/Recorderjs

데모는 나중에 BLOB 및 재생과 같은 오디오를 녹음 할 수 있습니다. 그것은 데스크톱 크롬을 위해 작동하지만 아이폰 OS 11 사파리 : 예 \ example_simple_exportwav.html audio_context.resume()는 아이폰 OS (11) 사파리에서 작동하지 않습니다 추가하여 fuction를의 startRecording에 간단한 수정()와

:

function startRecording(button) { 
    audio_context.resume(); 
    recorder && recorder.record(); 
    button.disabled = true; 
    button.nextElementSibling.disabled = false; 
    __log('Recording...'); 
    } 

희망이 또한 당신을 위해 작동합니다.

토미

또한 모두 모바일 사파리 지원 및 새로운 navigator.mediaDevices.getUserMedia() API에 대한 수정 한 다음, 참조 할 수 있습니다
+0

: https://github.com/tommysheu/Recorderjs –