0

1 つの Web ページに 47 個の mediaelementjs オーディオ要素があります。ページを開くと、それらはすべてプリロードを試み、小さな青い進行状況バーがどこにでも飛んでいきます。成功する人もいますが、決して始めない人もいます。これらのそれぞれの src タグは、ドロップボックス アカウントの mp3 ファイルを指しています。開始されないもので再生をクリックすると、再生されません。私がやりたいのは、ユーザーがいずれかで再生をクリックしない限り、ダウンロードを開始しないことです。

src を '' に設定して onclick="this.src='the url'" を設定しようとしましたが、うまくいきませんでした。不足している曲をダウンロードするようユーザーに求めようとしました。

必要に応じてコーディングの修正を試みますが、このような場合に本当に必要になるまでプリロードを無効にする簡単な方法があるはずですか? 何かご意見は?

ありがとう。

4

2 に答える 2

0

こんにちは、ようこそ!

問題に対する簡単な答えは、次のように各オーディオタグにプリロードパラメータを配置することです。

<audio src="http://yourdropbox.mp3" preload="none"></audio>

これにより、すべてのプレーヤーが同時にロードするという問題が解決するはずです。

より長い答えは、1ページの多くのプレーヤーがすべてのビデオを正しく再生するためにもう少し作業が必要なほとんどのアプリケーションでは(私はこれに汗を流したと信じています)。

まず、前述のプリロードパラメータはIE9では何もしないと思います。これを修正するために、IE9をシムモードに強制するコードを追加しました。

$('audio').mediaelementplayer({ 
    /*@cc_on
    @if (@_jscript_version == 9)
    mode: 'shim',
    @end
    @*/
    plugins: ['flash','silverlight']
});

これで、読み込みの問題なしに1ページに多くのオーディオプレーヤーを含めることができるはずです。ただし、少数のプレーヤーがまだ機能していないことに気付くかもしれません。これは、mediaelement.jsがアクティブ化されたときに、ブラウザーがすべてのオーディオファイルをダウンロードする要求を送信しているためです。高速インターネット接続では機能するかもしれませんが、他の接続では失敗します。したがって、最善の解決策は、オーディオプレーヤーの一部のみを表示してから、ユーザーにボタンをクリック(または一番下までスクロール)させて、さらに多くのオーディオプレーヤーを表示させることです。

于 2013-03-07T23:19:40.747 に答える
0

ほとんど同じ問題があり、ほとんどのブラウザーで mediaelementjs が複数のインスタンスをサポートしていないことがわかりました。そこで、これには UbaPlayer を使用しました。それが不可能な場合は、各オーディオ タグに player1、player2... のように増加する一意の ID を設定し、次のように動的にインスタンス化してみてください。

var players = [];

$('audio').each(function(i){

    players[i] = new MediaElementPlayer('#player'+i, {
        features: ['playpause', 'progress'],
        audioWidth: 250, audioHeight: 30,
        success: function (mediaElement) { mediaElement.pause(); mediaElement.load(); }
    });
于 2013-02-11T20:31:02.123 に答える