iPad не отображает видео H.264 с HTML5 - PullRequest
9 голосов
/ 21 июня 2011

У меня есть несколько видео в кодировке H.264, которые корректно отображаются в HTML5 в веб-браузере, но неправильно отображаются на iPad. Когда я использую видео H.264, загруженное из Интернета, мое видео корректно отображается на iPad, поэтому это не проблема HTML.

Вот информация о моих видео в ffmpeg -

Мое оригинальное видео .mov:

Кажется, что частота кадров кодека потока 1 отличается от частоты кадров контейнера: 6000,00 (6000/1) -> 30,00 (30/1)

Ввод # 0, mov, mp4, m4a, 3gp, 3g2, mj2 из 'a_video.mp4':

Metadata:

major_brand     : qt  
minor_version   : 537199360
compatible_brands: qt  

Продолжительность: 00: 00: 42,74, начало: 0,000000, битрейт: 220 кбит / с

Stream #0.0(eng): Audio: aac, 44100 Hz, stereo, s16, 94 kb/s
Stream #0.1(eng): Video: h264, yuv420p, 762x464, 122 kb/s, 30 fps, 30 tbr, 3k tbn, 6k tbc

После использования Handbrake для конвертации моего .mov в mp4, пока не отображается на iPad:

Кажется, что частота кадров кодека потока 0 отличается от частоты кадров контейнера: 180000.00 (180000/1) -> 29,97 (30000/1001)

Ввод # 0, mov, mp4, m4a, 3gp, 3g2, mj2 из 'a_video.m4v':

Метаданные:

major_brand     : mp42  
minor_version   : 0
compatible_brands: mp42isomavc1  
encoder: HandBrake 0.9.5 2011010300  

Продолжительность: 00: 00: 42,77, начало: 0,000000, битрейт: 169 кбит / с

Поток # 0.0 (und): Видео: h264, yuv420p, 752x464 [PAR 381: 376 DAR 381: 232], 35 кбит / с, PAR 145161: 141376 DAR 145161: 87232, 29,97 кадров в секунду, 29,97 тб, 90 000 тбит / с 180 кбит / с
Поток # 0.1 (англ): Аудио: aac, 44100 Гц, стерео, s16, 128 кбит / с

Вот .mp4, который я нашел онлайн, который рендерит на iPad:

Кажется, что частота кадров кодека потока 1 отличается от частоты кадров контейнера: 180000.00 (180000/1) -> 25.00 (25/1)

Ввод # 0, mov, mp4, m4a, 3gp, 3g2, mj2 из 'a_video_3_emu.mp4':

Метаданные: Major_brand: M4VP
несовершеннолетняя_версия: 1
Совместимые бренды: M4VPM4A, mp42isom
кодировщик: CoreMediaAuthoring 677, CoreMedia 420.17, i386

Продолжительность: 00: 01: 38.01, начало: 0,000000, битрейт: 1023 кбит / с

Поток # 0.0 (und): Аудио: aac, 32000 Гц, моно, s16, 97 кбит / с
Поток # 0.1 (und): Видео: h264, yuv420p, 480x360 [PAR 1: 1 DAR 4: 3], 914 кбит / с, 25 кадров в секунду, 25 тбр, 90 т тбн, 180 кб тбк

Кто-нибудь видит что-то не так с тем, как я кодирую свои видео?

Редактировать

Сначала моя теория заключалась в том, что iPad чувствителен к различным форматам контейнеров; но, похоже, дело не в этом. Я взял видео, которое правильно отображается на iPad, и преобразовал его в формат .mov, и оно все еще воспроизводилось на iPad правильно. Таким образом, должна быть проблема с тем, как iPad работает с основным потоком H.264.

Ответы [ 3 ]

3 голосов
/ 22 июня 2011

Если у вас есть видеопоток H.264 - независимо от контейнера (mov, m4v, mp4) - и ваше HTML5-видео отображается в веб-браузере, но не отображается на iPad, есть два возможных исправления:

Первое решение - преобразовать видеопоток H.264 в mpeg4.

ffmpeg -i video_h264_not_working.mov -acodec copy -vcodec mpeg4 video_mpeg.mov

(В качестве альтернативы вы можете выбрать MPEG4 вместо H.264 вРучной тормоз.)

Второе решение заключается в повторной обработке видео H.264 со следующими параметрами:

ffmpeg -i video_h264_not_working.mov -vcodec libx264 -r 25 -b 516k -bt 516k -crf 22 -vpre normal video_h264.mov

Второе решение получено из: http://houseoflaudanum.com/navigate/howtos/html5-video-no-webm/

Я предполагаю, что в первом случае кодек mpeg4 более расслаблен на iPad;и в последнем случае iPad не понравились некоторые параметры потока из исходной кодировки H.264, поэтому «очистка» была необходима.

Чтобы определить, что на самом деле представляет собой ваш видеопоток, просто выполнитеffmpeg -i myvideo.mov.

1 голос
/ 22 июня 2011

Я имел большой успех при кодировании и транскодировании видео HTML5 с помощью бесплатного Miro Video Converter (OS X, Windows), как рекомендовано в разделе Видео в Интернете.Dive Into HTML5 от Mark Pilgrim.

Miro Video Converter может конвертировать практически любой видеофайл в MP4, Theora или MP3 (только аудио).Он имеет предустановки, которые будут конвертировать видео в правильные размеры и форматы для популярных телефонов, iPod и других медиаплееров.Просто конвертируйте видео и копируйте его на свое устройство.

Это супер простой способ конвертировать практически любое видео в MP4, WebM (vp8), Ogg Theora или для Android, iPhone и т. Д.Вам будет приятно, что он на 100% бесплатный и с открытым исходным кодом.

Еще одна настоящая утилита для конвертации видео - Video Monkey , бесплатное приложение для кодирования видео.исключительно для Mac.Он был создан после кончины великого инструмента Visual Hub.Video Monkey в значительной степени заимствует из инструмента преобразования видео Visual Hub, как концептуально, так и из исходного дампа кода, размещенного в SourceForge как TranscoderRedux.

0 голосов
/ 22 июня 2011

sudo port install ffmpeg и попробуйте этот секретный соус:

#!/bin/bash
BR=512k
WIDTH=640
HEIGHT=272
input=${1}

# strip off the file extension
output=$(echo ${input} | sed 's/\..*//' )

# works for most videos
ffmpeg -y -i ${input} -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s ${WIDTH}x${HEIGHT} -vcodec libx264 -b ${BR} -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 7 -trellis 0 -refs 0 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate ${BR} -bufsize ${BR} -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 30 -qmax 51 -qdiff 4 -level 30 -aspect ${WIDTH}:${HEIGHT} -g 30 -async 2 ${output}-iphone.ts

Установите ширину и высоту в соответствии с исходным видео и установите битрейт по своему усмотрению.Передайте оригинальное видео в качестве параметра в сценарий.Работает практически с любым исходным форматом.Вам нужно macports для команды порта.

...