2017-05-24 6 views
-1

のプレイリストを再生するために、私は、このソリューション(Play audio local file with html)を見つけHTML5オーディオは、ローカルマシンからの曲を再生するオーディオタグを作成する方法についてしばらく検索した後ローカルのmp3ファイル

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<input type="file"> 
<audio controls id="myAudio" autoplay></audio> 

上記のコードは1つのファイルに適しています。質問は、FileReaderの複数のインスタンスを同時に作成せずに、オーディオをプレイリストのように再生するために複数のファイルを入力からロードするための良い方法があるかどうかです。まずファイルを配列に格納してから、その配列からsrcまたはオーディオを供給するようなものです。

+0

入力要素は、複数のファイルの選択を可能にすることができます。なぜあなたはこれをしたいのですか?ファイルがローカルマシンに保存されている場合、ユーザーは好きなメディアプレーヤーで再生することができ、フルコントロールを持つことができます – ADyson

+0

ブラウザでプレーヤーを作成するための楽しいプロジェクトです。私はファイル入力から複数のファイルを選択できますが、それらのファイルをプレイリストに追加するにはどうすればよいですか? – Lamar

+0

私はあなたが配列内の選択されたファイルのリストを取得し、最後のものを終了するたびに次のオーディオコントロールのソースを変更すると思いますか?それがいつ起こるか教えてくれるイベントがありますhttps://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events – ADyson

答えて

2

createObjectURL代わりのnew FileReader()

var songs = document.getElementById("songs"), 
 
    myAudio = document.getElementById("myAudio"); 
 
function next(n){ 
 
    var url = URL.createObjectURL(files[n]); 
 
    myAudio.setAttribute('src', url); 
 
    myAudio.play(); 
 
} 
 
var _next = 0, 
 
    files, 
 
    len; 
 
songs.addEventListener('change', function() { 
 
    files = songs.files; 
 
    len = files.length; 
 
    if(len){ 
 
    next(_next); 
 
    } 
 
}); 
 
myAudio.addEventListener("ended", function(){ 
 
    _next += 1; 
 
    next(_next); 
 
    console.log(len, _next); 
 
    if((len-1)==_next){ 
 
    _next=-1; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="file" id="songs" multiple> 
 
<audio controls id="myAudio" autoplay></audio>

+0

うわー!それはFileReaderよりずっと簡単です。私の情報のために、FileReaderでそれをやってもらうことができます。なぜなら私はターゲット結果をバインドするたびに私にそれを与えるからです:src(unknown)in audio tag? – Lamar

+0

@ラマーそれもできます。しかし、おそらくそれはあなたには、オーディオ名を認識しないため、不明を与える – AvrilAlejandro

+1

とにかく、私は解決策としてFileReaderよりもはるかに見えるので、これをマークしています。 – Lamar

関連する問題