Firefox 4 <audio>не показывает запасной контент, если указан только источник MP3 - PullRequest
2 голосов
/ 07 апреля 2011

Вот мой код:

<audio controls preload="auto">
   <source src="audio/batcat.mp3" />
   Your browser doesn't play MP3s. <a href="audio/batcat.mp3">Download the audio instead.</a>
</audio>

В Chrome и IE9 браузер отображает собственный аудиоплеер.

В Firefox, я ожидаю, что он покажет запасной текст и ссылку. Вместо этого он показывает уродливую серую рамку с крестиком в середине и не показывает запасной контент.

Это ошибка Firefox или я что-то не так делаю?

Действительно ли создатели браузеров говорят, что включают все возможные форматы, или не используют этот элемент вообще. Это кажется немного резким.

EDIT Ответ на поставленный выше вопрос, по-видимому, «да». Все, что я могу сказать, это: (

Ответы [ 3 ]

1 голос
/ 08 апреля 2011

Ты прав.Это потому, что каждый браузер поддерживает разные «кодеки».Первоначально в HTML5 должен был быть один кодек, но производители браузеров не могли договориться о том, какой кодек (обремененный патентом или открытый исходный код) так, чтобы это требование было отброшено.

Например, для видео, IE иПоддержка Safari H264 (MP4), Chrome, FF и Opera WebM / Ogg.Чтобы обеспечить его работу во всех браузерах, вы можете указать несколько исходных элементов и кодировать видео три раза.Сначала Mp4, потом WebM или Ogg (браузеры, поддерживающие видео, будут пробовать каждый элемент источника, пока не найдут тот, который смогут воспроизвести. Примечание: в настоящее время на iPad есть «ошибка», при которой он может воспроизводить только первый элемент источника)

Вы можете даже встроить объект Flash для вашего запасного варианта, чтобы ваше видео также работало в более старых версиях IE (<9).В итоге вы получите что-то вроде этого: </p>

<!—Multiple videos with alternate Flash content-->
<video controls>
 <source src="rocpoc.mp4">
 <source src="rocpoc.ogv"> 
    <object data="videoplayer.swf" type="application/x-shockwave-flash">  
      <param name="movie" value="rocpoc.swf"/>  
    </object>  
    A movie by Rocky Lubbers
</video>

Если вы хотите показать ссылку на файл, если браузер не может воспроизвести файл MP3, вы можете использовать немного кода JavaScript, чтобы проверить,браузер может обрабатывать формат MP3 и отображать вместо видео ссылку на файл.Для вызова метода JavaScript используется canPlayType.

//Checking for browser support
//canPlayType returns null, maybe, or probably (the best)
//You can check if they are supported in navigator.plugins

var support = videoElement.canPlayType('video/some-format;codecs="some-codec"');

В качестве альтернативы (я думаю, что только для видео) вы можете использовать такие службы, как vid.ly (http://m.vid.ly/user/)), которые обслуживают нужные файлы из облака.

1 голос
/ 02 июля 2011

То же самое верно для видео!Если вы встраиваете только файл MP4, Firefox не переходит на запасной вариант, а отображает серый блок «Я не могу воспроизвести этот формат».Вы должны использовать JavaScript, чтобы определить, какие кодеки может воспроизводить браузер.

http://praegnanz.de/html5video/firefoxtest

1 голос
/ 07 апреля 2011

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

Возможно, попробуйте добавить атрибут типа в объявление источника, чтобы помочь браузеру решить, что он не будетбыть в состоянии воспроизвести его?

<source src="audio/batcat.mp3" type="audio/mp3">

Кроме того, если у вас есть образец страницы, чтобы мы могли увидеть ее в действии (или нет, в зависимости от обстоятельств!), это было бы полезно.

edit Я сам проверил, и вы действительно правы, просто не работает.Как странно, я бы этого ожидал.Единственный способ заставить его работать - добавить источник с файлом OGG, который он может воспроизводить.

Я предлагаю вам использовать что-то вроде Modernizr для проверки, может ли он воспроизводить MP3 или нет.

...