Пользователь
0,0
рейтинг
24 декабря 2013 в 08:24

Разработка → Захватываем и снимаем демонстрационное видео iOS приложения подручными и не очень средствами – способы и решения



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

Сегодня на паре реальных примеров мы рассмотрим разные способы захвата видео с экрана устройств на 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.



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

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





Делаем выводы и финальный ролик

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

Для одних сработает недорогое и быстрое решение, а для других, если нужна хорошая картинка, придется повозиться вне зависимости от выбранного метода.

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

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



Спасибо за чтение и просмотры!

P.S. Свой опыт пары лет видеозахвата на iOS выписывал всю ночь — на вопросы кои возникнут отвечу, как высплюсь — по времени Москвы ближе к после обеда.
happybyte @happybyte
карма
37,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (22)

  • 0
    Спасибо за статью, было интересно!

    Помимо всего прочего у натурной съемки есть еще недостаток – руки тех, кто много работает с компьютерами обычно дрожат.


    Я часто работаю за компьютером и подтверждаю такой баг, но с чем это связано?
    • +1
      Спасибо :)

      Я часто работаю за компьютером и подтверждаю такой баг, но с чем это связано?


      Проблема с сосудами — Синдром запястного канала
      • 0
        Рекомендую (не буду писать, что это, чтобы не сочли за рекламу). Конечно, есть и более эстетичные, но мне нравится именно этот. Рука становится как стальная болванка.

        • +2
          Я раньше пользовался Power Ball — а потом купил правильное кресло и стал сидедеть с правильной осанкой :)
  • 0
    Я так и не понял, как работают эти мнемонические карточки для паролей…
    • +1
      Там же очевидно — твой пинкод прямо на экране, но только ты знаешь в каком месте экрана и в какой последовательности его набирать…
      Вот, правда, что ты будешь делать, если это забудешь?..

      Вообще, способ простой и древний — с тем же успехом можно пользоваться простым текстовым документом, вписать туда десяток пинов, из которых правильный только один. Я так делал для пина к карточке, которой не пользовался с получения ни разу. А когда оказалось что основную мою заблокировали за превышение дневного баланса, а денег нужно срочно, номер пина я так и не вспомнил. Опасно…
      • 0
        Да. Я тоже записывал так же — только в телефонах в адресной книге прятал. Осюда и идея собственно выросла.
  • 0
    Тоже сильно намучались. Есть еще вариант сделать jailbreak и использовать софт для записи прямо на устройстве, на это самое устройство же. Но производительность тоже оставляет желать.

    Игрушка-раннер любопытная — когда релиз?
    • 0
      Технически вариант с jailbreak, по ходу, это то же самое, что способ №3 — просто запись делает сторонняя утилита, которая не котролирует рендеринг кадров, как игровые библиотеки типа Everyplay.

      Игрушку скорее всего будем выпускать в феврале — работаем над ней с июня.

      Осталось добавить несколько боссов, два-три оставшихся вида оружия, добить уровни и добавить почти весь UI.
      • 0
        Удачи с релизом :). Потенциал, мне кажется, есть. Делаем свое довольно близкое по механике, буду за вас болеть.
        • 0
          Спасибо :-)
  • 0
    Подобный бы список методов, да про Android. Вдруг кроме использования камеры и утилит прямо на устройстве ещё есть варианты (hdmi выход есть, увы, далекоооо не у всех устройств).
    • +1
      Можно одолжить у знакомых на вечер. Я вчера так и сделал — попросил друга с 5S в гости зайти: сняли игровое видео через приложение AirServer (звук, правда, убежал от картинки).
    • 0
      По идее там недавно появился аналог AirPlay — возможно скоро кто-нить наваяет или уже наваял сервер для приема и записи видео :)
    • 0
      В последней версии Android запись видео, вроде, нативно.
  • 0
    А что все-таки за девайсы такие для снятия видео в способе №4? Можете назвать несколько?
    • +1
      Переходник на HDMI — официальный от apple. Девайсы для захвата: Blackmagic Design UltraStudio 4K (на фото), линейка Blackmagic Intensity, продукты AverMedia. Я, в общем то, могу порекомендовать AverMedia Live Gamer Portable, он дешевый, подключается по USB (2.0 вроде) и аппаратно сжимает видео. 1080p 60fps тянет без проблем насколько я помню.
      • 0
        хотя нет, вру. Он тянет только 1080p 30fps для захвата. 60fps поддерживается только на уровне сквозного выхода.
      • 0
        Да. Пока единственное, что тянет 1080p 60fps это UltraStudio 4k — их новый продукт. Все остальные дивайсы из дешевых достаточно старые — с iOS работают только на 720p 60fps.
      • 0
        Вы пишете, что использовали девайсы Avermedia. Они ведь не поддерживают запись видео защищенных с HDCP, а у устройств Apple, насколько мне известно, он включен. Или он включается избирательно ( например, при стриме фильмов через кабель HDMI)?
        • 0
          Я когда во всем этом разбирался, то пришел к выводу, что железо производят чуть ли не одни и те же китайцы для всех — отличия только в корпусе, брендинге и драйверах.
        • 0
          Насчет девайсов Apple не в курсе. При записи Playstation 3 проблему я решал так — запускается внешняя программа для записи и пишется Preview окно официальной программы захвата, там HDCP полностью игнорируется. Единственный минус данного метода — все преимущества хардварного сжатия потока на самой карте захвата сводятся на нет. Говорят еще что есть модифицированная программа записи/драйвер, которые игнорируют HDCP даже во время записи.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.