Как играть в mp4 видео файл с HTML5 video tag на iOS (iPhone и iPad)?
Я хочу отображать видео HTML5 для своих пользователей с помощью тега video. Для Firefox, Chrome и Opera WEBM работает так, как ожидалось. В Safari на Windows и Mac моя версия MP4 тоже работает. Единственная проблема, с которой я сталкиваюсь, заключается в том, что он не будет играть на iPad и iPhone (Safari, конечно).
создание видео
MP4 (h.264 + acc-lc) преобразуется следующим образом (с профилем: базовый уровень и уровень 3.0 для максимальной совместимости с iOS):
- поток #0:0(англ): видео: кодек H264 (ограниченная базовая линия) (avc1 / 0x31637661), yuv420p, 640x352, 198 кб/с, 17 кадров в секунду, 17 tbr, 17408 tbn, 34 tbc (по умолчанию)
- поток #0: 1 (eng): аудио:aac (LC) (mp4a / 0x6134706D), 48000 Гц, стерео, fltp, 56 КБ/С (по умолчанию)
Edit: весь выход ffprobe (небольшие изменения битрейта и т. д. к вышеупомянутому):
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.30.100
Duration: 00:01:00.05, start: 0.046440, bitrate: 289 kb/s
Stream #0:0(eng): Video: h264 (Constrained Baseline)
(avc1 /0x31637661), yuv420p, 640x352, 198 kb/s, 25 fps, 25 tbr,
12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz,
stereo, fltp, 85 kb/s (default)
Metadata:
handler_name : SoundHandler
я нашел различные требования для устройств iOS, как этой и этой, и кто-то упомянуто, чтобы добавить формат пикселей yuv420p при преобразовании.
в самом деле ffmpeg cmd выглядит так:
ffmpeg -i __inputfile__ -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -level 3.0 -b:v 200K -r 17 -bt 800K -c:a libfdk_aac -b:a 85k -ar 44100 -y __outputfile_lowversion__.mp4
отображать видео
С помощью Modernizr я определяю, какой формат "поддерживается", и добавляю его в src
или video
тег. Последнее, что добавляет правильный тип MIME. Для mp4 я добавляю type="video/mp4"
. Полный код video
тег есть:
<video class="p-video" preload="auto" autoplay="" type="video/mp4" src="http://full.url/to/video_low.mp4"/>
я пробовал различные способы: собственная реализация с собственным интерфейсом, элементы управления и прочее от поставщиков браузера и видео.js просто проверить, не слишком ли я studip для этого. Все работают в перечисленных выше средах, за исключением iPhone и iPad.
Я читал эту статью на видео в интернете, особенно эта часть и обслуживать только" правильный "файл с" правильным " типом без poster
набор атрибутов.
Мой Apache имеет
AddType video/mp4 mp4 m4v f4v f4p
AddType video/ogg ogv
AddType video/webm webm
и байтовые диапазоны включены. Это необходимо для получения частичного содержимого с сервера.
кто-нибудь знает, что там происходит? Заранее спасибо!
Edit: Safari и Chrome оба броска MEDIA_ERR_SRC_NOT_SUPPORTED
ошибка на iPad. Должна быть проблема с кодировкой.
2 ответов
попробуйте включить '' - или определить src
по-разному.
<video src="http://example.com/path/mymovie.mov"
controls
height=340 width=640
poster="http://example.com/path/poster.jpg">
</video>
проверьте эту статью " о HTML5 аудио и видео для Safari "(руководство разработчиков)
кроме того, хорошая стабильная помощь HTML5 <video>
тег для iPad / iPhone is JW player.
(работает с ним)
jwplayer('video').setup({
flashplayer: '/Scripts/jwplayer/player.swf',
file: 'seanpenn.mp4',
autostart: false,
controlbar: 'over',
image: 'spicoli.jpg',
width: 295,
height: 214,
skin: '/Scripts/jwplayer/glow.xml',
stretching: 'exactfit'
});
Я нашел причину, по которой iPad и iPhone не будут играть. моя папка имеет ограниченный доступ через htaccess для защиты бета-приложения. Firefox и так далее перенаправляют имя пользователя и пароль на все запросы, safari на Mac снова запрашивает учетные данные, но браузеры на iPad и iPhone этого не делают. Чтобы быстро проверить это Я удалил защиту папки, и она работала нормально. Спасибо за все вклады и мысли о моей проблеме!