2017-10-27 20 views
0

base64 문자열로 인코딩 된 10 초 오디오 스트림이 있습니다. 오디오 태그에 연결되면 HTML 요소 내에서 제대로 재생됩니다. 다운로드를 시도 할 때 파일은 0:00의 지속 시간을 가진 손상된 파일로 다운로드됩니다. 30,000 문자 한도를 초과하려고하는 것은 질문에서 허용되지 않기 때문에오디오 base64 문자열을 손상시키지 않고 mp3 파일로 다운로드하는 방법은 무엇입니까?

var audio = document.getElementById('audio-element'); 
 
var linkTag = document.getElementById('link-element'); 
 

 
linkTag.href = audio.src; 
 
linkTag.download = 'audio-file'; 
 
linkTag.click();
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     
 
    </head> 
 
    <body> 
 
    <audio src="data:audio/mp3; codecs=opus;base64,GkXfo59ChoEBQveBAULy.............IiT5Q==" controls id="audio-element"> 
 
     Your browser does not support the audio element 
 
    </audio> 
 
    
 
    <a href="" id="link-element">Download audio</a> 
 
    </body> 
 
</html>

위의 코드에서 base64로 문자열이 유효하지 않습니다. 결과적으로 나는 그것을 다듬어야했다. 원래 문자열은 유효하고 잘 재생되지만 글자 수 제한 때문에 여기에 게시 할 수 없습니다.

내가 원하는 것은 정확한 mp3 파일을 'audio/mp3'유형의 base64 인코딩 된 문자열에서 다운로드하는 것입니다.

일반 자바 스크립트/ES6을 사용하여 어떻게 수행합니까? 통찰력은 크게 감사하겠습니다.

답변

0
audio/mp3; codecs=opus; 

그런 것은 없습니다. Opus는 오디오 코덱입니다. MP3는 오디오 코덱입니다. "MP3 파일"은 단순한 원시 MPEG 스트림입니다. 오푸스를 원시 MPEG 스트림에 넣을 수는 없습니다.

브라우저는 사용자에게 실제로 좋으며 실제 데이터가 무엇이든 상관없이 실제로 해석합니다. 아마 다른 선수들.