Почти год назад я писал о том, как из имеющихся подручных материалов сделать устройство-кронштейн для качественной съемки видео с экрана мобильного устройства и даже получил симметричный ответ – критический очерк о том, что реальная съемка не нужна, а видео работы приложения лучше захватывать с экрана или симулятора.
Сегодня на паре реальных примеров мы рассмотрим разные способы захвата видео с экрана устройств на iOS и увидим, почему автор ответной публикации не прав по многим пунктам – узнаем о достоинствах и недостатках присущих каждому из способов и сделаем для себя соответствующие выводы.
Приглашаю вех под кат разобраться, выбрать подходящий из 5 рассмотренных и опробованных нами способов и посмотреть примеры полученного разными способами видео.
Захват видео или натурная съемка?
Все способы записи и захвата видео для целей демонстрации возможностей приложений и игр можно разделить на две общие части – захват и запись различными способами только происходящего на экране и традиционная съемка на камеру экрана устройства целиком, вместе со всем окружением.
Первый подход применим в случаях, когда нужно показать только происходящее на экране, что практикуется, например, в обзорах игр, или когда нужно получить качественный видеопоток для дальнейшей его обработки и монтажа, например, чтобы вставить его в ролик внутрь виртуального экрана.
Второй подход больше подходит для случаев, когда необходимо продемонстрировать, как устройство и приложение взаимодействует с окружением, или показать, как управлять приложением или игрой с помощью специальных жестов.
Обоим подходам свойственны и преимущества и недостатки, но, в последнее время, съемка традиционной камерой приобретает все большую актуальность не только в связи с нарастающими проблемами с различными способами захвата видео, но и из-за того, что современные приложения и игры чаще используют схемы управления жестами, что также нуждается в демонстрации.
К достоинствам прямого захвата видео можно отнести возможность, при правильном подходе, получить более качественную и чистую картинку происходящего на экране без каких-либо искажений – что практически идеально подходит для последующего использования видеопотока в промо роликах с добавлением различных эффектов.
На этом достоинства метода заканчиваются и начинаются недостатки, которые свойственны уже каждому конкретному способу захвата.
Я не буду говорить о том, что для использования голого видеопотока для демонстрации недостаточно и что нужно будет тратить время на добавление в видео и пальцев, которые будут демонстрировать жесты, и какого-либо окружения, которое сделает видео визуально более интересным – если вы захватываете голое видео, то вы сами понимаете зачем это делаете, поэтому рассмотрим только технические аспекты.
Есть несколько основных способов захвата экранного видео iOS приложений.
Способ №1 – запись экрана симулятора
Самый простой способ это запись экрана компьютера с приложением запущенным на симуляторе iOS.
Существует множество программ позволяющих записывать видео экрана, но я не могу посоветовать кому-либо этот способ, годящийся только для очень простых приложений – и то далеко не факт.
Основной недостаток в том, что, каким бы быстрым не был компьютер, если нужно продемонстрировать плавность анимации на 60 кадрах в секунду, то этого не выйдет.
Растут разрешения экранов и мобильных устройств и компьютеров, что для записи и сжатия на лету видео требует значительных ресурсов – что приводит к потере кадров и соответственно к дерганному дискретному видео – даже сам симулятор не справляется с достаточно быстрым рендерингом.
Экран iPad с Retina, например, уже не помещается ни в один обычный монитор, даже большой.
Кроме этого, при записи видео с экрана, когда необходимо также записывать и звук, в большинстве предназначенных для этого программ, в силу специфики такой записи, происходит десинхронизация звука и видео.
Поэтому метод записи экрана симулятора уже не подходит для большинства приложений и игр.
Даже не обращаясь к более ресурсоемким приложениям я записал тестовое видео запустив в симуляторе приложение Maps, тормоза и дергания которого видны невооруженным взглядом, а на устройстве Map не тормозит.
Способ №2 – запись через AirPlay
Есть программы и для Mac и для Windows, например, Reflector, которые позволяют не только превратить ваш компьютер в приемник AirPlay, но и записывать входящий видеопоток – любое устройство с iOS на борту подключается к компьютеру, так же как к Apple TV, и начинает передавать видео на компьютер.
Здесь основная проблема заключается в пропускной способности канала Wi-Fi.
Еще когда мы занимались разработкой игр специально под AirPlay делая почти консоли из iOS-устройств, стало ясно, что даже идеальный Wi-Fi не сможет передавать картинку в высоком качестве и без потерь кадров.
Была надежда на то, что с появлением 802.11n проблема решится и канала будет хватать для Full HD, но она пока еще остается надеждой.
Более того, по мере наращивания разрешений экранов конверсия в видео и его передача по воздушной сети требуют все больше вычислительных ресурсов – да и происходящие в самой iOS изменения также добавляют, очевидно, требуя ресурсов для собственных нужд.
Современные устройства пока не справляются – даже самые новые.
Сносно работал еще старый iPad 2 без Retina на разрешении 720p, но на новой iOS тормоза уже и там, а на 1080p есть заметная потеря кадров даже на iPhone 5S и особенно на iPad с экранами Retina – незагруженный Wi-Fi последнего поколения без наличия соседей по каналу, которого должно хватать, не сильно помогает.
Похоже именно поэтому Apple пока не сильно обращает внимание пользователей на AirPlay в части использования для игр.
В итоге AirPlay пока годится только для передачи уже готового, записанного видео, которое буферизируется на стороне приемника этим нивелируя узость канала – ни для игр, ни для записи экрана такой метод не подходит.
Для иллюстрации проблемы я записал два ролика. Простое приложение и игру, которая требует несколько больших ресурсов. Даже в простом приложении заметен эффект, похожий на то, что частота кадров далеко не 60, а в игре присутствуют заметные задержки и рывки.
При этом на самих устройствах потери кадров нет и FPS не ниже 60.
Способ №3 – запись через библиотеку для записи игрового видео
Существуют уже готовые системы для записи и с целью последующего обмена игровых видео непосредственно из кода игры, например, Everyplay.
Да и собственную запись игровых кадров из Open GL в файл сделать несложно благодаря примерам.
Способ достаточно неплохой, но недостатки тоже есть.
Для обычных приложений реализованных на UIKit такая запись будет происходить с нереально низкой частотой кадров, а игры Open GL должны быть в достаточной мере оптимизированы, чтобы иметь возможность выделить необходимые ресурсы для записи видео и не тормозить.
Примеры записей можно посмотреть на сайте того же Everyplay – простые игры дают неплохой FPS на выходе, а там, где ресурсы железа требуются самой игре, есть дергания и тормоза.
Способ №4 – запись через устройство захвата видео
Устройство для захвата видеосигнала часто используется крупными игровыми порталами для захвата игрового видео – опробовали такое и мы, даже несколько таких – iOS-устройство подключается к такому устройству или плате захвата видео с помощью специального кабеля по HDMI.
Недостатки у такого способа есть и помимо цены самого оборудования для захвата видео – кроме того, что к устройству или плате захвата для получения хорошего качества требуется также и достаточно неплохое и, следовательно, тоже дорогое железо, в этом случае наличествует проблема характерная для рассмотренных нами ранее способов.
Относительно недорогих устройств для захвата видео очень немного. При этом многие из них не позволяют записывать видео с iOS в Full HD даже с конвертером – iOS передает сигнал на 1920х1080p с 60 FPS, а дешевые устройства могут писать либо 30 FPS Full HD либо режим Interlaced. Поэтому на первом нашем устройстве мы потанцевав с бубном могли записывать только 720p.
Относительно недавно появилось более мощное устройство, но там из-за размеров картинки уже проявились другие недостатки.
Сама запись видеопотока на компьютере требует скорости записи на диск никак не менее 160-380 мегабайт в секунду – даже при сжатии. Чтобы иметь возможность записывать Full HD при небольшой скорости, нужен хороший кодек, например, Apple Pro Codec, который идет в наборе к пакету Final Cut Pro. Без кодека нужна или очень мощная дисковая система или будут теряться кадры – проблема давно известна, для чего в настройках программ захвата видео есть специальная опция автоматического прекращения записи в случае обнаружения потери кадра.
При этом оказалось, что с переходом на разъем Lightning похоже железо для конверсии видео было вынесено непосредственно из устройства в сам кабель, что обнаружили порталы, которые любят разбирать и исследовать разные технологичные устройства – да и качество просело по сравнению со старым типом провода HDMI, который на Full HD давал практически идеальную картинку.
Плюс игра или приложение должны быть достаточно оптимизированы, чтобы не пострадали производительность и частота кадров, поскольку система забирает себе весьма много ресурсов на генерацию видеопотока.
В примерах ниже уже заметно значительное улучшение – простое приложение дает весьма неплохую частоту кадров, но игра все же имеет некоторую дискретность видео.
Причем проблема находится именно на стороне передачи и системной конверсии видео – в самой игре стабильно измеряется 60 FPS.
Ниже приведен пример с более заметными тормозами, когда видео захватывалось с iPad Retina. При отличном FPS на устройстве на выходе получаются задержки и проскоки. Заметен резкий контраст плавности анимации между той, которая сделана вручную и той, которая видна на экране, в захваченном видеопотоке.
Способ №5 – традиционная запись DSLR-камерой с натуры
С точки зрения отсутствия тормозов, дергания видео и проседания частоты кадров традиционная видеозапись является самым идеальным способом.
Недостаток в том, что для записи в хорошем скорее всего потребуется не только более дорогое, даже по сравнению с устройством захвата видео, оборудование, но и определенные временные затраты – на создание сцены, постановку света, запись множества дублей и последующую обработку с целью сглаживания недостатков.
Вопрос с фотографической техникой в том, что для записи с экрана применяются все те же правила и требования, что и для традиционной съемки.
В частности, кроме самой DSLR-тушки понадобится еще и отдельный светосильный объектив – чтобы избежать шума, особенно, если снимать нужно будет при несильном освещении или если интерфейс приложения или игра сделаны в темных тонах. Например, объектив 50мм, который хорошо подходит для продуктовой съемки может стоить от сотни до нескольких тысяч долларов. Нам подошел средний вариант с диафрагмой f/1.4.
Свет и сцена уже зависят от требований. Как видно из фото, здесь мы сэкономили воспользовавшись дешевыми подручными средствами – для отсутствия бликов мы просто обернули обычную настольную лампу листом обычной офисной бумаги. А роль дневного света в виде светлого блика на столе в финальном ролике ниже в условиях нашей зимы выполнила вспышка iPhone, свет которой мы также рассеяли закрыв светодиод бумагой.
Помимо всего прочего у натурной съемки есть еще недостаток – руки тех, кто много работает с компьютерами обычно дрожат.
По мере съемок множества дублей в силу того, что даже имея готовый сценарий, снять видео сразу хорошо непросто, атмосфера у нас накалялась и становилась все более эмоциональной с комментариями на все более и более русском языке – зато мы хорошо посмеялись просматривая ролики с «the shaking hand» в главной роли.
Вопрос трясущейся руки был с большего решен с помощью быстрой перемотки – функции Time Remap в редакторе After Effects.
Решали и другие вопросы, начиная с того, чтобы просто подобрать хорошие параметры съемки, и заканчивая тем, что от малейшего сдвига устройства расстроится фокус – автоматический фокус при этом использовать в большинстве случаев не получится, поскольку он будет фокусироваться на руках, а не на экране, да и с хорошей оптикой, при идеальной фокусировке на экране будет видна решетка между кристаллами и на видео будет заметен муар.
На примерах ниже, которые были сделаны без дублей и на скорую руку, заметно, что устройство не совсем попадает в фокус, если смотреть экран крупным планом.
Делаем выводы и финальный ролик
Подводя итог скажу, что выбор метода захвата или съемки экрана зависит прежде всего от задачи и специфики самого приложения или игры.
Для одних сработает недорогое и быстрое решение, а для других, если нужна хорошая картинка, придется повозиться вне зависимости от выбранного метода.
Либо оптимизировать приложение, чтобы оно не тормозило с более простыми способами, либо тратить время, силы и средства на более сложные методы – при этом оптимизация может быть относительно тупиковым путем, поскольку даже относительно простые на вид игры могут использовать ресурсы мобильного железа на близкой к пределу границе.
Далеко не всегда стоит сразу бежать за дорогим оборудованием, а если и нужно, то к его выбору и покупке нужно подойти тщательно изучив его характеристики, чтобы не потратить напрасно деньги так и не решив задачу.
Спасибо за чтение и просмотры!
Автор: happybyte