@kot123123
я кот

Как указать аудио файл находящийся в папке с проектом на JS?

У меня есть вот эта библиотека и простой код
var context = new AudioContext();
var fileInput = document.getElementById("fileInput");

fileInput.onchange = function () {
  var files = fileInput.files;

  if (files.length == 0) return;
  var reader = new FileReader();

  reader.onload = function(fileEvent) {
    context.decodeAudioData(fileEvent.target.result, calcTempo);
    print(fileEvent.target.result);
  }

  reader.readAsArrayBuffer(files[0]);
}
var calcTempo = function (buffer) {
  var audioData = [];
  // Take the average of the two channels
  if (buffer.numberOfChannels == 2) {
    var channel1Data = buffer.getChannelData(0);
    var channel2Data = buffer.getChannelData(1);
    var length = channel1Data.length;
    for (var i = 0; i < length; i++) {
      audioData[i] = (channel1Data[i] + channel2Data[i]) / 2;
    }
  } else {
    audioData = buffer.getChannelData(0);
  }
  var mt = new MusicTempo(audioData);

  console.log(mt.tempo);
  console.log(mt.beats);
}


Как мне вместо fileInput подставить файл из папки со скриптом и при это чтобы все работало?
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
@zkrvndm
Софт для автоматизации
Не совсем понятно, где выполняется код.

Если код выполняется в браузере, то файл можно подгрузить в поле так:
async function pasteAudio() {
	
	var blob = await (await fetch('https://ссылка_на_ваш_аудиофайл')).blob();
	
	var dt = new DataTransfer();
	dt.items.add(new File([blob], 'audio_name.mp3', {type: 'audio/mpeg'}));
	document.getElementById("fileInput").files = dt.files;
	
	document.getElementById("fileInput").dispatchEvent(new Event('change'));
	
}

pasteAudio();

Предполагается, что ваше аудио доступно по ссылке и находится на том же сайте, на котором вы выполняйте код.

P. S. Кстати, поле выбора файлов здесь использовать вовсе не обязательно, можно его исключить при желании.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы