Аудио HTML5 не будет воспроизводиться на мобильных устройствах - PullRequest
5 голосов
/ 30 марта 2012

Уважаемые разработчики HTML5,

У меня проблемы с этим звуком HTML5 ... Итак, давайте перейдем к нему.

ap  = "<audio width='200' height='30' preload='auto' controls autobuffer>";
ap += "<source src='util/blob_audio.php?i=" + w + "&ogg=1' type='audio/ogg' />";
ap += "<source src='util/blob_audio.php?i=" + w + "&mp3=1' type='audio/mpeg' />";
ap += "</audio>";

Я генерирую его в JavaScript, и метод возвращает его при необходимости. Думаю, мне не нужно было упоминать эту переменную "w", это параметр ( YouDontSay ), и он работает просто отлично.

Все должно быть в порядке, верно? Они появляются на настольных компьютерах, но у них возникают проблемы на мобильных устройствах (я тестировал на iPad2, планшете Android 3.2.1, смартфоне Android 2.3.6).

На iPad 2 сказано: «Не удается воспроизвести аудиофайл». в элементе. И Droid показывает аудио элемент по умолчанию, но без регулировки громкости, визуально он говорит, что играет - прыгает с начала до конца.

Заголовки PHP выглядят следующим образом (в blob_audio.php) (мы храним аудио в виде блобов в БД [не спрашивайте меня, почему, это была не моя идея]):

header("Content-Type: audio/ogg"); // this is inside of a condition, this is the "ogg" part of it
header('Content-Length: ' . $length);
header('Content-Disposition: inline');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');

Это прекрасно работает, так как все работает на настольных компьютерах.

Я думал, что, возможно, эти форматы (mp3, ogg) не правильно (не поддерживаются кодеком) кодируются для процессоров с архитектурой ARM. Может ли это случиться с mp3?

мысль? Кто-нибудь? =)

Спасибо, Ben

Ответы [ 3 ]

15 голосов
/ 10 апреля 2012

Хорошо, мы поняли это.=)

Итак, вот факты (см. Ниже в списке):

Проблема в iStuffs -> Мы работаем над безопасным соединением (HTTPS).Это портит обработку звука iShit HTML5.Им нужен некоторый «промежуточный сертификат» - возможно, для аутентификации или я не знаю - между цепочкой сертификатов сервера.Таким образом, эта вещь не работает на нашем тестовом сервере через SSL.Кто знал ... Это работает, когда вы развернете его как обычно.Но вот и Android, будьте осторожны!

Android забавен, поскольку (как задокументировано -_O) Droid НЕ поддерживает форматы мультимедиа через SSL ниже версии 3.1.Это полный "порок с человечеством" ... Я не понимаю, почему такая проблема заключается в том, чтобы заставить систему аф * кайкинга воспроизводить любое мультимедиа / мультимедиа через соединение F * cking SECURE в 21 веке ...Должно быть, это какой-то закон об авторском праве, который я должен снова вырвать ...

На случай, если вы хотите узнать, что мы сделали, чтобы решить эту проблему: мы выяснили, что если мы действительно хотимчтобы сделать наше приложение кросс-браузерным и «кросс-совместимым с устройством» (не знаю, правильно ли оно названо, но я уверен, что вы его получите;)), нам нужно «убрать» звук (мульти / медиа)из-под SSL.Поэтому для простоты мы создали простой субдомен HTTP (отдельная папка в иерархии) для наших аудиофайлов (сейчас нам нужен только звук) и сделали его доступным через этот субдомен + аутентифицируйте / проверяйте через файл сценария.Таким образом, все идет по протоколу HTTPS, но мульти-медиа отдельно для HTTP.

Отлично работает на любом устройстве f * cking в любое время.Я знаю, что это «более масштабное» решение, но это наиболее «реализуемое» решение для любого устройства, на котором мы тестируем эти вещи.

Надеюсь, это кому-то помогло!=) Ура!

0 голосов
/ 30 марта 2012

Нет атрибута "автобуфер". Вот возможные атрибуты, согласно документации:

src
crossorigin
preload
autoplay
mediagroup
loop
muted
controls

Атрибут type дает тип медиаресурса, чтобы помочь пользовательскому агенту определить, может ли он воспроизводить этот медиаресурс, перед его извлечением. Если указано, его значение должно быть допустимым типом MIME. Параметр codecs, который определяют некоторые типы MIME, может потребоваться для точного указания способа кодирования ресурса (согласно [RFC4281] )

В следующем списке приведены некоторые примеры использования параметра codecs= MIME в атрибуте type, действительного не только для аудио, но и для видеофайлов.

H.264 Constrained baseline profile video (main and extended video compatible) level 3 and Low-Complexity AAC audio in MP4 container
<source src='video.mp4' type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
H.264 Extended profile video (baseline-compatible) level 3 and Low-Complexity AAC audio in MP4 container
<source src='video.mp4' type='video/mp4; codecs="avc1.58A01E, mp4a.40.2"'>
H.264 Main profile video level 3 and Low-Complexity AAC audio in MP4 container
<source src='video.mp4' type='video/mp4; codecs="avc1.4D401E, mp4a.40.2"'>
H.264 'High' profile video (incompatible with main, baseline, or extended profiles) level 3 and Low-Complexity AAC audio in MP4 container
<source src='video.mp4' type='video/mp4; codecs="avc1.64001E, mp4a.40.2"'>
MPEG-4 Visual Simple Profile Level 0 video and Low-Complexity AAC audio in MP4 container
<source src='video.mp4' type='video/mp4; codecs="mp4v.20.8, mp4a.40.2"'>
MPEG-4 Advanced Simple Profile Level 0 video and Low-Complexity AAC audio in MP4 container
<source src='video.mp4' type='video/mp4; codecs="mp4v.20.240, mp4a.40.2"'>
MPEG-4 Visual Simple Profile Level 0 video and AMR audio in 3GPP container
<source src='video.3gp' type='video/3gpp; codecs="mp4v.20.8, samr"'>
Theora video and Vorbis audio in Ogg container
<source src='video.ogv' type='video/ogg; codecs="theora, vorbis"'>
Theora video and Speex audio in Ogg container
<source src='video.ogv' type='video/ogg; codecs="theora, speex"'>
Vorbis audio alone in Ogg container
<source src='audio.ogg' type='audio/ogg; codecs=vorbis'>
Speex audio alone in Ogg container
<source src='audio.spx' type='audio/ogg; codecs=speex'>
FLAC audio alone in Ogg container
<source src='audio.oga' type='audio/ogg; codecs=flac'>
Dirac video and Vorbis audio in Ogg container

Подробнее см. http://www.whatwg.org/specs/web-apps/current-work/#the-audio-element.

0 голосов
/ 30 марта 2012

Вы должны использовать AAC вместо MP3 .

Похоже, ваш тип контента жестко запрограммирован на audio / ogg - вы хотите убедиться, что он установлен правильно при запросе MP3/M4A.

...