mediaelement.js - Android的默认浏览器,海豚浏览器加载MP3的问题

问题描述:

好日子,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

我在Android上同样的问题(但视频...)

有人告诉我,这是与时间没有被下载的文件的问题 - 即浏览器开始下载,但由于该文件没有被下载,它是0:00长,所以结束的事件被触发。

如果有一些方法可以使视频/音频可以更快下载,它可以解决问题。

奇怪的是,如果该设备具有良好的WiFi,那么这个问题基本上消失。

看看约翰·戴尔说,大约在这里:

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