2013-07-09 33 views

回答

2

這是一個帶有mediaelement.js的known issue。這與Flash插件requiring使用NetStream類而不是Sound類播放的AAC文件有關。

然而,還有一種解決方法:您可以告訴媒體元素將文件視爲視頻,然後所有內容都按原樣運行。初始化播放器時設置pluginVars: 'isvideo=true'。例如。

$('#player').mediaelementplayer({ 
      pluginVars: 'isvideo=true', 
     }); 

您可能還需要告訴的MediaElement的Flash插件能夠處理的MIME類型的音頻/ MP4(由於某種原因,它目前只處理音頻/ M4A)。在mediaelement-and-player.js中查找mejs.plugins.flash並添加「audio/m4a」。

請注意,這將使本機處理AAC文件的瀏覽器完全不受影響;它只會在需要Flash後備時發揮作用。

另一個注意事項:我最近發現,如果這個解決方法被濫用,MP3文件可能無法播放。因此,您需要檢測文件是MP4/M4A的時間,然後才應用它。

+0

我嘗試添加pluginVars ='isvideo = true',強制執行勻場模式,並在Flash可處理的類型列表中添加音頻/ mp4(音頻/ m4a已存在)。但m4a文件仍然有效。我應該寧願使用

0

要擴展@ samuel-jack的回答,下面是我如何解決Firefox無法使用mediaelement.js在.m4a封裝中播放AAC音頻的問題,同時還允許播放mp3。

  1. 編輯的MediaElement和 - player.js的MediaElement和 - player.min.js並添加"audio/m4a"mejs.plugins.flash.types陣列。
  2. 確保.mp4文件與正確的MIME類型一起提供;它添加到你的Apache配置:

    AddType audio/mp4 m4a 
    
  3. 使用HTML類似如下。我使用的$mime_type變量包含audio/mp4用於AAC mp4音頻文件,而audio/mpeg用於正常mp3文件。

    <audio controls preload="metadata"> 
        <source src="file.m4a" type="<?php echo $mime_type; ?>"> 
        <object width="100%" height="30" type="application/x-shockwave-flash" data="flashmediaelement.swf"> 
         <param name="movie" value="flashmediaelement.swf" /> 
         <param name="flashvars" value="controls=true&amp;file=file.m4a" /> 
        </object> 
    </audio> 
    
  4. 加載mediaelement腳本,然後在每個文件的基礎上運行它。當音頻來源類型屬性包含audio/mp4時,我們需要選擇性地包含isvideo=true黑客。

    $('audio,video').each(function(i) { 
        // Need to add the 'isvideo' hack for 'audio/mp4' media types. 
        var plugin_vars = ($(this).children('source').attr('type').search('audio/mp4') > -1) ? 'isvideo=true' : ''; 
        $(this).mediaelementplayer({ 
         audioWidth: '100%', 
         videoWidth: '100%', 
         startVolume: 1.0, 
         pluginVars: plugin_vars 
        }); 
    }); 
    

這非常適用於既.M4A和.mp3文件在Firefox 25和31,鉻36,和Safari 7 OS X,以及火狐31在Windows 7

相關問題