Можно ли генерировать видео со скоростью 60 кадров в секунду и воспроизводить его со скоростью 60 кадров в секунду? - PullRequest
2 голосов
/ 25 сентября 2011

Для высокопроизводительной научной цели нам нужно рендерить видео и воспроизводить его на скорости 60 кадров в секунду на устройстве.Я предполагаю, что обычная частота кадров видео H.264 ниже, чем эта.

Возможно ли это, или фиксированная частота кадров?Если да, то какую максимальную частоту кадров мы можем получить при воспроизведении видео H.264 в полноэкранном режиме на устройстве?

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Технические характеристики могут различаться в зависимости от устройства iOS и устройства iOS, поэтому вам необходимо проверить, на каком оборудовании вы фактически будете его запускать. Для iPad 2, который в настоящее время является самым мощным из устройств iOS, технические характеристики Apple для видео содержат следующее:

Поддерживаемые форматы видео: видео H.264 до 720p, 30 кадров в секунду, Уровень основного профиля 3.1 с аудио AAC-LC до 160 кбит / с, 48 кГц, стерео аудио в форматах файлов .m4v, .mp4 и .mov; MPEG-4 видео, до 2,5 Мбит / с, 640 на 480 пикселей, 30 кадров в секунду, простой профиль с Аудио AAC-LC до 160 кбит / с на канал, 48 кГц, стереозвук в формате .m4v, форматы файлов .mp4 и .mov; Motion JPEG (M-JPEG) до 35 Мбит / с, 1280 на 720 пикселей, 30 кадров в секунду, аудио в формате ulaw, стереозвук PCM в формате файла .avi

Может показаться, что полноэкранное воспроизведение H.264 со скоростью 60 кадров в секунду не поддерживается даже на надежном оборудовании iPad 2.

Однако вы действительно можете отображать контент на экране со скоростью 60 FPS. Я делаю это все время как в тяжелых приложениях Core Animation, так и в тех, которые используют OpenGL ES. Если вы можете генерировать контент в приложении достаточно быстро, чтобы отображать его с такой скоростью, вы можете отобразить его на экране со скоростью 60 кадров в секунду, а затем кодировать каждый второй кадр в видео.

Учитывая, что кодирование видео является достаточно дорогостоящей операцией, и, похоже, вы также хотите здесь выполнить какую-то симуляцию, я предполагаю, что вы не сможете рендерить каждый кадр со скоростью 60 кадров в секунду для отображения на экране. экран на текущем оборудовании просто из-за нагрузки на систему.

0 голосов
/ 21 марта 2013

Да, можно кодировать видео в виде серии изображений, а затем очень быстро отображать изображения на экране. Узким местом в этом процессе является верхний предел видеооборудования и время декодирования изображений и их перетаскивания на видеокарту. Пока ваша логика декодирования изображений не слишком медленная, должна быть возможность передавать видеоданные на графическую карту со скоростью 60FPS.

Вы можете попробовать реализовать это самостоятельно с помощью серии изображений PNG, но я думаю, вы обнаружите, что декодирование изображения PNG не будет достаточно быстрым, чтобы получить воспроизведение со скоростью 60 кадров в секунду. Вы можете найти бесплатный пример кода, который реализует этот подход с изображениями PNG в моем ответе на этот вопрос

Если вы не можете получить нужную производительность, взгляните на мою библиотеку AVAnimator для iOS, так как она уже полностью решает эту проблему с помощью отображенных в память кадров, которые можно отправлять непосредственно на видеокарту из сопоставленной памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...