загрузить музыкальный файл в аудио-буфер для использования с offlinecontext (web audio api) - PullRequest
1 голос
/ 01 июля 2019

Я хочу использовать веб-аудио OfflineAudioContext для сохранения некоторых коротких звуковых файлов в новый более длинный звуковой файл.Похоже, что OfflineAudioContext использует аудиобуфер для сохранения звука.Я использую аудио тег для загрузки своих звуковых файлов.Как я могу преобразовать звуковые файлы в аудио-буфер, который я могу передать в буфер OfflineAudioContext.Я не хочу использовать XMLHttpRequest для создания аудио буфера.Я хотел иметь возможность загрузить каждый звуковой файл, затем добавить его в буфер, а затем передать его в автономный контекст.Я пробовал несколько разных способов, но самое большее, что я сделал, - это передача пустого аудио-буфера в контекст, который просто дает мне файл без звука.

Я пробовал несколько функцийвеб-аудио контекст для создания нового буфера, но я либо получаю ошибки, либо нет звука

<html>
  <body>
<audio controls controlsList = "nodownload" id="audio"><source id="audioSource" src="" />
  Your browser does not support the audio format.</audio>
<script>
// define online and offline audio context

var audioCtx1 = new AudioContext();
var offlineCtx = new OfflineAudioContext(2,44100*40,44100);
var channels = 2;
// Create an empty two second stereo buffer at the
// sample rate of the AudioContext
var frameCount = audioCtx1.sampleRate * 2.0;

var myArrayBuffer = audioCtx1.createBuffer(2, frameCount, audioCtx1.sampleRate);

source = offlineCtx.createBufferSource();

var array = ['sound1.mp3','sound2.mp3','sound3.mp3']

var audio = document.querySelector('audio');
audio.src = array[0];

        source.buffer =  myArrayBuffer;
        source.connect(offlineCtx.destination);
        source.start();
        //source.loop = true;
        offlineCtx.startRendering();


offlineCtx.oncomplete = function(e) {
  var audioCtx = new (window.AudioContext || window.webkitAudioContext)(); 
  var song = audioCtx.createBufferSource();
  song.buffer = e.renderedBuffer;

  song.connect(audioCtx.destination);


    song.start();


  console.log("completed!");
}

</script>
</body>
</html>

Я несколько раз менял код во время тестирования, я думаю, что с этим кодом, который я разместил, у меня просто нет звукаигры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...