2017-10-27 8 views
0

私はbase64文字列としてエンコードされた10秒のオーディオストリームを持っています。オーディオタグにアタッチすると、HTML要素内で正しく再生されます。ダウンロードしようとすると、破損したファイルとしてダウンロードされ、継続時間は0:00です。オーディオ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>

3万文字の制限を超えて行くのは質問では許可されていないため、上記のコードでbase64文字列は、無効です。その結果、私はそれを整えなければならなかった。元の文字列は有効であり、正常に再生されますが、文字数制限のためにここに投稿することはできません。

私が望むのは、正確なmp3ファイルを、 'audio/mp3'タイプのbase64エンコードされた文字列からダウンロードすることです。

プレーンなjavascript/ES6を使用してこれを行うにはどうすればよいですか?洞察は大いに評価されるだろう。

答えて

0
audio/mp3; codecs=opus; 

このようなことはありません。 Opusはオーディオコーデックです。 MP3はオーディオコーデックです。 「MP3ファイル」は生のMPEGストリームです。 Opusを生のMPEGストリームに入れることはできません。

ブラウザはおそらく、実際に何があっても、実際にどのようなデータを持っていてもそれを解釈してくれています。他のプレイヤー、恐らくそれほど多くはありません。

関連する問題