2017-10-25 18 views
2

오디오 파일을로드하는 중에 문제가 발생하여 readAsArrayBuffer에 저장하는 중입니다. 난 그냥 그렇게처럼 로컬 하나를로드 할, 사용자가 파일을 선택하기를 원하지 않는다 :JavaScript - 오디오 파일을 readAsArrayBuffer에로드하는 중 문제가 발생했습니다.

나는, 나는 다음과 같은 오류 위합니까
let file = new File('../music/song.mp3'); 
let reader = new FileReader(); 

reader.onload = function(e) { 
    playSound(e.target.result); 
} 
reader.readAsArrayBuffer(file); 

: 그래서

Uncaught TypeError: Failed to construct 'File': 2 arguments required, but only 1 present.

을 나는이 시도 :

Uncaught (in promise) DOMException: Unable to decode audio data

: 다음이 오류가 발생

let file = new File([''], '../music/song.mp3'); 

로드되는 크기는 0입니다.이 오류는이 오류를 생성하는 이유입니다.

document.getElementById('open-file').onchange = function(evt) { 
    let file = evt.target.files[0]; 

사람이이 문제를 해결하는 방법을 알고 있나요 : 나는 사용자가 부하에 파일을 선택할 수 있습니다 때

모든 것이 잘 작동?

+1

사용자 상호 작용없이 로컬 파일 시스템 파일을 읽을 수 없으면 보안 위험이 있습니다. [File()에 대한 문서] (https://developer.mozilla.org/en-US/docs/Web/API/File/File)도 참조하십시오. 인수가 무엇인지 보여줍니다. –

+0

이 파일을 가져와야합니다. 파일 생성자는 URI를 처리하지 않고 입력을 받아들이지 않습니다. 그래서 당신이 원하는 것은'fetch ('../ music/song.mp3')입니다. 그러면 (r => r.arrayBuffer()) then (buf => audioContext.decodeAudioData (buf) .then (enjoyTheAudioBuffer) ;' – Kaiido

답변

0

패트릭 에반스 (Patrick Evans)가 말했듯이, 보안 위험 때문에 전혀 가능하지 않습니다. HTML5로 오디오를 쉽게 재생할 수는 있지만, 오디오 파일을로드하고 배열 버퍼로 읽을 수는 없습니다.