Захватываем и снимаем демонстрационное видео 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 выписывал всю ночь — на вопросы кои возникнут отвечу, как высплюсь — по времени Москвы ближе к после обеда.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 22
    • 0
      Спасибо за статью, было интересно!

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


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

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


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

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

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

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

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

            Осталось добавить несколько боссов, два-три оставшихся вида оружия, добить уровни и добавить почти весь UI.
            • 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 даже во время записи.

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