2013-03-18 102 views
1

好日子,mediaelement.js - Android的默認瀏覽器,海豚瀏覽器加載MP3的問題

我目前正在建設一個網站爲自己(我是一個作曲家/製作人),和我使用的媒體元素主演示頁面。該網頁正在建設中,在下面的鏈接:

http://www.vincentrubinetti.com/listen.html

http://www.vincentrubinetti.com/listen.js

下面是什麼,我認爲是相關的功能和代碼:

function initPlayer() 
{ 
    player = new MediaElementPlayer('#listen_player',{ 
     success: function (mediaElement, domObject) 
     { 
      mediaElement.addEventListener('play', resumeSong, false); 
      mediaElement.addEventListener('ended', playNextSong, false); 
      mediaElement.addEventListener('pause', pauseSong, false); 
     } 
    }); 

    [omitted] 
} 

function setSong(element) 
{ 
    if (element != "") 
    { 
     unselectAllSongs(); 
     document.getElementById(element).className = "listen_song_highlight"; 

     [omitted] 

     var newSrc = document.querySelector("#"+element+" .listen_song_source").title; 
     player.pause(); 
     player.setSrc(newSrc); 
     player.load(); 
    } 
} 

function playSong(element) 
{ 
    document.querySelector("#"+element+" .listen_song_status").innerHTML = "playing"; 
    player.play(); 
} 

function playNextSong() 
{ 
    var newSong = document.querySelector(".listen_song_highlight + div.listen_song"); 
    if (autoplay && newSong != null) 
    { 
     setSong(newSong.id); 
     playSong(newSong.id); 
    } 
    else 
    { 
     document.querySelector(".listen_song_highlight .listen_song_status").innerHTML = "stopped"; 
    } 
} 

的這所有的CSS似乎已經結束沒問題。它在列表中找到下一首歌曲並設置新的來源;我已經通過警報和其他調試驗證了它的正確性。但是,在Android默認瀏覽器和Dolphin瀏覽器中,它似乎無法有時加載mp3,並且過早地觸發「結束」事件以轉到下一首歌曲。其結果是,在完成一個播放後,它似乎跳過了2-3首歌曲。而要花一分力氣,點擊歌曲div和播放器播放按鈕,也需要一些折騰。我可以輸入與html相同的網址,瀏覽器就可以播放/下載它,只需訪問或加載它即可。

下面是重複播放列表中的3個mp3文件,供參考。他們是我的,但是真正音樂的佔位符。

NEW/music/creation.mp3 
NEW/music/startup.mp3 
NEW/music/win.mp3 

注意,所有這一切都正常工作在Chrome,火狐,IE8 +,和Android瀏覽器(我沒有測試iPhone或iPad還)。

我的診斷是否正確?任何人都可以將我指向正確的方向嗎? MediaElement在Android默認和Dolphin瀏覽器上無法正常工作嗎?

+0

如果它是一個服務器或MediaElement的異常,我很好只是讓它是。但是,如果這是我的代碼,我不能休息,直到它是正確的!但是,我無法想象會發現我的代碼有什麼問題。由於Web開發的臨時性/零碎性,可能需要一些解決方法。 – 2013-03-18 00:25:43

回答

2

我在Android上同樣的問題(但視頻...)

有人告訴我,這是與時間沒有被下載的文件的問題 - 即瀏覽器開始下載,但由於該文件沒有被下載,它是0:00長,所以結束的事件被觸發。

如果有一些方法可以使視頻/音頻可以更快下載,它可以解決問題。

奇怪的是,如果該設備具有良好的WiFi,那麼這個問題基本上消失。

看看約翰·戴爾說,大約在這裏:

https://github.com/johndyer/mediaelement/issues/543