브라우저에서 PCM 오디오를 재생할 때 문제가 발생했습니다. PCM 오디오는 udp-protocol이있는 안드로이드 장치에서 가져온 것으로 서버에 * .raw로 저장됩니다.자바 스크립트로 PCM 재생
webaudioapi를 사용하여 저장된 파일을 재생하는 데 실패했습니다. 다음 코드를 사용하여, 백색 소음과 좀 소름 끼치는 사운드를 재생 :
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
audioCtx.sampleRate = 16000;
// Stereo
var channels = 1;
// Create an empty two second stereo buffer at the
// sample rate of the AudioContext
var frameCount = audioCtx.sampleRate * 10.0;
var myAudioBuffer = audioCtx.createBuffer(channels, frameCount, audioCtx.sampleRate);
var req = new XMLHttpRequest();
req.open('GET', "example.raw", false);
req.overrideMimeType('text\/plain; charset=x-user-defined');
req.send(null);
function play(){
for (var channel = 0; channel < channels; channel++) {
var nowBuffering = myAudioBuffer.getChannelData(channel,16,16000);
for (var i = 0; i < frameCount; i++) {
// audio needs to be in [-1.0; 1.0]
// for this reason I also tried to divide it by 32767
// as my pcm sample is in 16-Bit. It plays still the
// same creepy sound less noisy.
nowBuffering[i] = (req.responseText.charCodeAt(i) & 0xff;
}
}
// Get an AudioBufferSourceNode.
// This is the AudioNode to use when we want to play an AudioBuffer
var source = audioCtx.createBufferSource();
// set the buffer in the AudioBufferSourceNode
source.buffer = myAudioBuffer;
// connect the AudioBufferSourceNode to the
// destination so we can hear the sound
source.connect(audioCtx.destination);
// start the source playing
source.start();
}
그것이 내가 할하는 생각 PCM 파일을 재생중인 경우 잘 모르겠어요 이러한 식별 할 수없는 사운드를 재생합니다.
나는 pcm 파일로 뭔가를해야한다고 생각합니다. PCM 파일에는 16 kHz 샘플 속도, 샘플 당 16 비트 및 단 하나의 채널 또는 오히려 모노 채널이 있습니다.
아무도 같은 문제가 있거나 아무도 내 문제를 해결하기 위해 제안을 했습니까?
나는 해결책을 찾고 며칠 째부터 찾고 있으며 도움을 주셔서 감사합니다. 모든
의 오른쪽 구현 그것입니다. 수정본을 제출하고 예제를 추가했습니다. – Locoluis
나는 당신의 모범으로 그것을 시도합니다. 여전히 작동하지 않습니다 .../ 예제와 함께이 raw를 재생해볼 수 있습니까? http://taxameter.esy.es/example.raw –
다른 모든 프레임을 제공하는 것이 좋습니다. 그들이 부드러운 데이터를 가지고 있기 때문에 나의 예제가 효과가 있었다. 나는 대답과 실천 사례를 업데이트했다. 또한'audioCtx.sampleRate'를 전혀 사용하거나 사용하지 않아도됩니다. – Locoluis