2013-07-09 7 views
2

У меня возникла проблема с mediaelement.js при воспроизведении файлов с расширением .m4a в браузерах, которые в корне не поддерживают кодек AAC.Почему mediaelement.js не воспроизводит файлы .m4a при использовании Flash fallback?

Проигрыватель хром загружается, а первая минута звука буферизуется, но файл никогда не воспроизводится.

Что происходит?

ответ

2

Это known issue с mediaelement.js. Это связано с плагином Flash requiring Файлы AAC для воспроизведения с использованием класса NetStream, а не класса Sound.

Однако есть обходной способ: вы можете указать элементу мультимедиа, чтобы обрабатывать файл как видео, а затем все работает так, как должно. Установите pluginVars: 'isvideo=true' при инициализации проигрывателя. Например.

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

Вам также может понадобиться сказать MediaElement, что флэш-плагин способен обрабатывать тип мим аудио/MP4 (по какой-то причине в настоящее время только обрабатывает аудио/m4a). Найдите mejs.plugins.flash в mediaelement-and-player.js и добавьте «audio/m4a».

Обратите внимание, что это оставляет браузеры, которые изначально обрабатывают файлы AAC полностью незатронутыми; он войдет в игру только тогда, когда требуется резерв Flash.

Другое примечание. Недавно я обнаружил, что если эта работа применяется без разбора, файлы MP3 могут не воспроизводиться. Таким образом, вам нужно будет определить, когда файл MP4/M4A, и применять его только тогда.

+0

I попробовал добавить pluginVars = 'isvideo = true', форсируя режим прокладки и добавляя аудио/mp4 (аудио/m4a уже был там) в списке типов, которые могут обрабатывать вспышки. Но файлы m4a все еще работают. Должен ли я использовать элемент

0

Чтобы расширить ответ на @ samuel-jack, вот как я решил проблему Firefox, неспособную воспроизводить аудио AAC в обертке .m4a, используя mediaelement.js, таким образом, который также позволяет воспроизводить 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, а затем запустите его для каждого файла. Нам нужно выборочно включать в себя хакер isvideo=true, когда атрибут типа источника аудио содержит audio/mp4.

    $('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, Chrome 36 и Safari 7 на OS X, а также Firefox 31 на Windows 7.