Почему mp4-видео отлично воспроизводится на iPad, а не на iPhone?

Я очень сильно обеспокоен этой проблемой.

У меня есть большая библиотека видеофайлов H.264 mp4, которые мне нужно играть в iOS. Первоначально я ориентировался только на iPad, но требования изменились, и теперь мне нужно включить iPhone. Но я заметил, что мой iPod Touch, который имеет точно такую ​​же версию ОС и ID сборки, что и мой iPad, не будет воспроизводить те же файлы, которые я успешно использовал на iPad. Я подтвердил это с коллегой, у которого также есть iPhone и iPad с той же версией и сборкой. Я также видел то же самое поведение в симуляторе iPad, но до сих пор я решил, что это причуда симулятора. Теперь я не уверен.

mp4s закодированы со следующими настройками:

AVC Coding 640x360, Millions
AAC, Stereo (L R), 44.100 kHz
29.97 fps
693.35kb/s

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

Если я экспортирую эти файлы из QuickTime в виде файлов m4v, они отлично воспроизводятся на всех устройствах и симуляторах, поэтому моя кишка говорит мне, что это параметр кодировщика, который мне не хватает.

Чтобы устранить все другие возможные факторы, я попытался вызвать видеофайлы непосредственно из адресной строки Mobile Safari. Я подтвердил, что это происходит на следующих сборках:

Устройства

  • 4.2.1 (8C148) - воспроизводится на iPad, а не на iPhone.

симуляторов:

  • 3.2 (7W367a) - играет хорошо на iPad (нет версии для iPhone)
  • 4.0.2 (8A400) - не воспроизводит iPhone (нет версии для iPad)
  • 4.1 (8B117) - не воспроизводит iPhone (нет версии для iPad)
  • 4.2 (8C134) - не воспроизводит iPhone или iPad.

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

У кого-нибудь есть идеи, что может быть за этим и как я могу это исправить?

Ответ 1

Убедитесь, что ваш кодер не использует функции H.264, недоступные для iOS. Я считаю, что все устройства iOS поддерживают 3.0 Baseline, все, кроме первого поколения, поддерживают 3.1 Baseline и самые последние версии 3.1 Main. Википедия имеет список различий между различными профилями.

Ниже представлена ​​более подробная информация о поддержке устройств iOS здесь, но официальные технические спецификации для каждого устройства перечисляют его конкретные возможности.