MP3 Flash Fallback on Opera & FireFox using MediaElement

MP3 Flash Fallback on Opera & FireFox using MediaElement.js

本文关键字:FireFox using MediaElement amp Flash Fallback on Opera MP3      更新时间:2023-09-26

我正试图将mediaelement.js添加到我的网站中,为特定页面上的任何MP3链接提供一个播放器。IE 9和Chrome 11(支持HTML5 MP3)的设计运行良好,但Opera 11和FireFox 4的闪存回退存在问题。点击页面上的任何MP3链接都会使用媒体元素播放器的.setSrc()方法来更改播放器的来源,但在Opera和FF中,第一次调用此方法时,会返回错误"this.media.setSrc不是函数"。之后对函数的任何调用都可以正常工作。

另一个问题是,在包含播放器的元素被隐藏为"display:none",然后再次显示后,调用.pause()函数将产生错误"this.pluginApi.pauseMedia不是函数"。在抛出该错误之后,后续调用可以正常工作,直到元素被隐藏并再次显示为止。

以下是相关代码,如有任何帮助,我们将不胜感激。

<script type="text/javascript" src="../js/mejs/mediaelement-and-player.min.js"></script>
<script type="text/javascript" src="../js/media.js"></script>
<div id="mediaPlayerFooter" class="mediaPlayerWrapper">
    <div id="mediaPlayer">
        <audio id="mp3Player" src="mp3/null.mp3" autoplay="autoplay" type="audio/mp3"></audio>  
    </div>
    <div id="closeButtonWrapper"><p><a id="closeButton" href="#close">Close</a></p></div>
</div>
$(function() {
    // Show the footer, load the MP3 file, and play.
    $("a[href*='.mp3']").click(function(e) {
        e.preventDefault();
        PlayMP3($(this).prop('href'));
    }); 
    // Stop the MP3 playback and close the footer.
    $('#closeButton').click(function(e) {
        e.preventDefault();
        ClosePlayer();
    });
});
function CreatePlayer() {
    var player = new MediaElementPlayer('#mp3Player',{
        audioWidth: 250, 
        startVolume: 1.0
    });
    return player;
}
function PlayMP3(sourceUrl){
    $('#mediaPlayerFooter').slideDown(750);
    var player = CreatePlayer();
    try {
        player.pause();
        player.setSrc(sourceUrl);
        player.load();
        player.play();
    }
    catch(err)
    {
        txt="There was an error loading the MP3.  ";
        txt+="Error message: " + err.message;
        console.log(txt);
    }
}
function ClosePlayer(){
    var player = CreatePlayer();
    player.pause();
    $('#mediaPlayerFooter').slideUp(750);
}

您还需要添加"flashmediaelement.swf"。