Технические особенности приложения
- Буфер памяти
- Работа с GPU
- 10 бит
- 60 кадров в секунду
- Сохранение настроек
- В нативном приложении (стоке) есть…
- Лучшее мобильное устройство для видеосъемки
- Приближение объекта фокусировки двойным касанием
- 4:2:2
- Запись в формате RAW
- Поддержка внешних стабилизаторов
Буфер памяти
Для более ровной записи видео в высоких битрейтах, когда накопитель может стать “узким местом”, в приложении реализовано временное сохранение кадров в оперативной памяти устройства. При заполнении буфера информация переносится в контейнер MP4. Использование буфера позволяет более точно обрезать файлы при записи с делением на файлы.
Внимание! Именно использование буфера создает паузу при остановке записи. Все время до того, как кнопка записи снова станет серой, буфер переносит информацию в контейнер MP4. Если для записи используется карта памяти, время паузы может увеличиваться в разы.
Работа с GPU
Главная особенность GPU, кроме того, что он повышает нагрузку на аппарат в разы, это то, что через GPU невозможно обрабатывать 10 бит.
10 бит
10 бит для сторонних приложений доступны на таких аппаратах:
Asus Snapdragon 855/865/888
Samsung Snapdragon 855/865/888, Exynos начиная с S10e с OneUI 2.5 и выше
Sony Snapdragon 855/865/888
LG начиная с V35
Nokia 9 PV
OnePlus 7 Android 11, OnePlus 8 и выше
Oppo Find X2 (не подтверждено)
Xiaomi Snapdragon 855/860/865/888, Snapdragon 845 только Android 9 (несколько моделей)
В приложении mcpro24fps почти каждому аппарату доступность 10 бит включается только после тестов данного аппарата на предмет поддержки 10 бит. Причина этому — заявления производителей о поддержке 10 бит в технической информации аппарата, но фактическом отсутствии оной.
60 кадров в секунду
Многие пользователи, которые видели в своих нативных приложениях возможность съемки с частотой 60 кадров в секунду, вдруг посчитали, что их устройства стабильно могут снимать в данном режиме в любых условиях, при любых настройках.
На сегодня нет ни одного андроид-устройства, на котором данный режим был бы официально открыт сторонним приложениям и работал бы безусловно.
Пара примеров для лучшего понимания проблемы.
LG G7 умеет снимать в 60 кадрах в секунду только с активированной аппаратной резкостью. Даже если игнорировать тот факт, что 60 к/с недоступны сторонним приложениям и реализуются через «костыли», при отключении аппаратной резкости устройство снимает со скоростью 57-58 к/с.
Sony Xperia 1 (5) — первый аппарат от Сони, на котором появились условно официальные 60 к/с. Но работают они только в режиме автоматической экспозиции и очень условно, по настроению.
Samsung S20/S21 на процессорах Snapdragon не имеют официальных 60 к/с, а заведенный через “костыли” режим 60 к/с заставляет устройство перезагружаться. На много лучше дела обстоят на устройствах Samsung Exynos. Там аппарат не просто не перезагружается, но и сам режим вполне работоспособный.
Xiaomi Redmi Note 8 Pro не дает запустить 60 к/с. И одной из причин тому, как нам кажется, является процессор MediaTek.
Часто пользователи ссылаются на нативные приложения или гкам. Для таких пользователей у нас есть раздел «В нативном приложении (стоке) есть…»
Сохранение настроек
На сегодня почти все настройки сохраняются автоматически. Учитывая то, что второстепенные сенсоры часто сильно отличаются от основного по возможностям, в приложении многие настройки, касающиеся изображения или управления сенсором, сохраняются для каждого сенсора отдельно.
На сегодняшний момент в приложении нет механизма, который позволял бы сохранить определенный набор настроек в пресет. Есть режимы и настройки, работу которых предстоит переделать прежде, чем приступать к реализации сохранения общего пресета. Мы прекрасно знаем, что это было бы удобно, но «Москва не сразу строилась».
В нативном приложении (стоке) есть…
Нам часто задают вопросы, которые начинаются с «А почему не работает...» и заканчиваются «В нативном приложении есть, значит аппарат может!»
Самый частый «Почему на Xiaomi не работает цифровая стабилизация?»
Мы попытаемся сравнить написание приложения для аппаратов Андроид с управлением автомобилем.
Представьте, вы — водитель (разработчик).
У вас есть автомобиль (телефон) марки N.
Вечер. Темно. Чтобы добраться до пункта назначения (записать видео), вам нужны включенные фары (цифровая стабилизация).
Вы конечно же как нормальный человек пытаетесь использовать стандартный переключатель (по документации Camera2 API), а фары не работают. Поездка выходит не самой приятной.
На следующий день вы едете в авторизованный сервис (вскрываете нативное приложение) и спрашивайте у работника сервиса (исследуете код), каким образом включить фары. Работник сервиса вскрывает приборную панель, под которой находится много замочных скважин, достает из широких штанин какой-то непонятный ключ, вставляет его в одну из скважин, поворачивает и фары включаются.
Вы конечно же в шоке, но в вас еще теплится надежда, что вам могут выдать этот ключ. Но не тут-то было! Работник сервиса ясно намекает, что никакого ключа вы не получите, и фары у вас будут работать только, если вы наймете этого работника к себе в шоферы (воспользуетесь нативным приложением).
И хорошо, если вы видели ключ и скважину к которой он подходит. Вы злитесь, но обегаете весь город в поисках такого же ключа (заглядываете в самые сокровенные уголки нативного приложения). Находите его у какого-то взломщика дверей, который вытачивает эти ключи самостоятельно (понимаете код, как он работает и куда применять ключ). Радостные отправляетесь к автомобилю, вставляете ключ, поворачиваете и наблюдаете как с включением фар у вас складываются зеркала. Оказывается, что зеркала с фарами могут работать только если для зеркал найти отдельный ключ.
Именно так на многих устройствах работают:
60 кадров в секунду
120/240 кадров в секунду
8К
Цифровая стабилизация
10 бит
Ручной фокус
И, определенно, есть еще что-то.
Мододелы GCam бесконечно занимаются тем, что бегают по городу и разыскивают нужные ключи для активации тех или иных функций. Часто их поиски ограничиваются небольшим количеством конкретных автомобилей. И скажем честно, их не сильно волнует, если у вас с включением фар будут складываться зеркала.
Мы рады, когда у нас получается найти нужные ключи. Но чаще результат противоположный, или нас не устраивают складывающиеся зеркала.
Итог: если в руках работника авторизованного сервиса что-то работает, а в руках водителя нет, то причиной может быть то, что работник сервиса не хочет делиться нужным ключом. И вообще считает, что единственным водителем вашего автомобиля должен быть он. И прежде, чем возмутиться недоступности функции, есть смысл убедиться, что производитель автомобиля все переключатели (настройки Camera2 API) сделал там, где они должны располагаться, и что они работают так, как должны работать (по документации Camera2 API).
Лучшее мобильное устройство для видеосъемки
Обычно в таких случаях говорят: «То, что у тебя с собой в кармане». Но пользователей этот ответ не устраивает.
Честный же ответ менее позитивный, чем тот, что выше. А звучит он как «Лучшего не существует, если мы говорим об аппаратах Андроид». Каждое устройство Андроид имеет какой-то набор проблем, с которым будет готов мириться один пользователь, но которые могут вызывать полное отторжение у другого.
Самая основная проблема всех андроид устройств в том, что производители нахваливают свои смартфоны в контексте исключительно нативных приложений. Когда производитель говорит, что в новом устройстве будет режим 60/120/240 к/с, он говорит исключительно о своем нативном приложении камеры. Когда производитель говорит, что в новом устройстве будет поддержка записи в 10 бит, он говорит исключительно о своем нативном приложении камеры. Когда производитель говорит об особенном HDR режиме с захватом огромного динамического диапазона, будьте уверены, он говорит исключительно о своем нативном приложении камеры.
Производителей устройств на ОС Андроид не интересует, что умеет их аппарат в сторонних приложениях. Они не думают о том, чтобы дать возможность сторонним разработчикам создавать мощные инструменты, корректно работающие на их устройствах.
Да, были попытки у Самсунг и Хуавей предоставить сторонним разработчикам доступ к уникальным функциям через собственное API. В результате Самсунг отказались от этой идеи в пользу стандартного Camera2 API, но отказались так, что лишили сторонних разработчиков даже вполне стандартных функций. Хуавей решили создать свой API после проблем с санкциями. Но это тоже не сработало. Проблема такого подхода в том, что, используя данные API, ничего лучше стока не сделать. А сочетать и Camera2 API и API от производителя сложно, двойная работа.
Как выглядит идеальное мобильное устройство для видеосъемки?
Все три сенсора (ультраширик, ширик и телевик) имеют одинаковые возможности. Если доступны 60 к/с, до доступны на всех сенсорах. Калибровка баланса белого одинаковая на всех сенсорах. И т.д. и т.п.
Доступны все основные частоты 24, 25, 30, 48, 50, 60, 100, 120, 200, 240 к/с. И все частоты работают стабильно.
Без проблем работает ручной ББ.
Без проблем работают автофокус и ручной фокус. Имеют одинаковый диапазон хода без всяких “костылей”.
Без проблем работают автоэкспозиция и ручная экспозиция. Имеют одинаковый диапазон хода и для ISO и для выдержки, без всяких “костылей”. Важно, чтобы экспозиция не отличалась между режимами 8 и 10 бит.
Режим HDR доступен для включения без всяких “костылей”.
Все задокументированные в Camera2 API настройки сенсора камеры доступны и работают. Хотя бы если доступны, то работают.
Все задокументированные в Android API настройки кодека доступны и работают.
Хорошее охлаждение.
10 бит 4:2:2 было бы огромным преимуществом.
Samsung
Не дает доступа к телевику ни на одном из своих устройств. Соответственно 8К недоступны сторонним приложениям, за это отвечает телевик.
На младших моделях может не работать тоновая кривая (гамма-кривые).
Проблемы с аппаратным шумодавом в режиме 10 бит. Очень много жалоб.
Есть проблемы с электронной стабилизацией, не работает.
Exynos
Проблема количества точек тоновой кривой на всех аппаратах, начиная с S6. Нам доступны только 32 точки, что делает работу логарифмических кривых куцей и некрасивой. Приходится регулировать плотность точек тоновой кривой.
На аппаратах S20 и S21 при блокировке экспозиции экспозиция кадра меняется. Исправление данной проблемы с помощью “костылей” приводит к тому, что перестает работает приближение (zoom).
Snapdragon
Проблема с режимом 60 к/с. На устройствах S20 и S21 данный режим заставляет устройство перезагружаться.
OnePlus
На всех устройствах данного производителя есть проблемы с частотами кадров 24 и 25 к/с, не работают. На всех устройствах данного производителя есть проблемы с электронной стабилизацией, она не работает. На OnePlus 7 и 8 с приходом ОС Андроид 11 были закрыты доступы к второстепенным модулям. Доступны только основная задняя и фронтальная. Также на Андроид 11 появились поблемы с 48, 50, 60 к/с, на некоторых устройствах осталась только одна адекватная частота — 30 к/с.
На некоторых аппаратах, не сильно современных и современных среднего сегмента, наблюдаются проблемы работы автоматических фокуса, экспозиции и баланса белого одновременной с ручным режимом любой из этих функций. Например, одновременный выбор ручного фокуса и автоматической экспозиции может останавливать работу автоматической экспозиции. Или выбор ручной экспозиции может останавливать работу автоматического фокуса. Это никак не лечится, это особенность работы библиотек камеры.
Xiaomi
На всех устройствах данного производителя есть проблема с электронной стабилизацией, она не работает. Там, где доступна оптическая, проблема тоже может наблюдаться. На устройствах на процессоре MediaTek может наблюдаться проблема с тоновой кривой (гамма-кривые). 60 к/с доступны в основном только на флагманах.
Redmi
Все проблемы производителя Xiaomi. Плюс на некоторых устройствах при работе с тоновой кривой (гамма-кривые) может наблюдаться зелень в тенях. 60к/с стали доступны начиная с Note 9 Pro. Были ранее какие-то отдельные аппараты с 60к/с, но это, скорее, исключения из правил.
Huawei
На всех устройствах данного производителя наблюдаются проблемы с частотами кадров 24 и 25 к/с, не работают. На всех устройствах с сенсорами RYYB наблюдаются проблемы с ручным балансом белого, не работает. От ручного баланса белого зависит работа гамутов.
На отдельных устройствах можно наблюдать проблему нерабочей тоновой кривой (гамма-кривые).
На большом количестве устройств не отключается аппаратная резкость и оптическая стабилизация.
Sony
На устройствах до Xperia 1 недоступны 24 и 25 к/с, работают только в режиме ручной экспозиции. 60 к/с стали возможны только начиная с Xperia 1 II. На Xperia 1 60 к/с работали только в режиме автоматической экспозиции в 1080p.
На устройствах Xperia 1 II и выше включение 60 к/с и выше в разрешении выше 1080p вызывает поломку приближения (zoom), он перестает работать.
Почти все устройства данного производителя очень греются при записи. В какой-то момент нагрев достигает критического уровня, и начинают выпадать кадры в большом количестве. Исключением может являться Xperia Pro, там производитель поработал над охлаждением.
На устройствах второго поколения (Mark II) режим HDR, который включен по умолчанию в движении в местах резкого перехода от очень темного к яркому оставляет темный некрасивый след. Выключение режима приводит к более контрастной картинке, выключается мульти-экспозиция.
60 к/с на последних моделях активируются только при использовании ГПУ. До выхода ОС Андроид 11 на устройствах семейства Pixel 4 и 5 наблюдались проблемы с тоновой кривой (гамма-кривые), она не работала.
LG
Один из самых «костыльных» производителей. Очень многие функции, доступные в mcpro24fps, реализованы обходными путями. Благо их реализация, в отличие от других производителей, не так сложна.
На некоторых аппаратах, не сильно современных и современных среднего сегмента, наблюдаются проблемы работы автоматических фокуса, экспозиции и баланса белого одновременной с ручным режимом любой из этих функций. Например, одновременный выбор ручного фокуса и автоматической экспозиции может останавливать работу автоматической экспозиции. Или выбор ручной экспозиции может останавливать работу автоматического фокуса. Это никак не лечится, это особенность работы библиотек камеры.
Выключение аппаратной резкости понижает частоту 60 к/с до 57-58 к/с.
Наблюдаются проблемы с электронной стабилизацией, она не работает.
Приближение объекта фокусировки двойным касанием
Функция работает только в режиме ручной фокусировки, активируется двойным касанием по объекту фокусировки. Данная функция предназначена для моментального приближения объекта фокусировки посредством увеличения изображения видоискателя в 4 раза (2-кратное приближение). Качество изображения приближенной части видоискателя зависит от разрешения видоискателя. Если вы хотите иметь качество выше, то у вас есть возможность воспользоваться соответствующей настройкой разрешения видоискателя.
Функция следит за тем, в каком месте произведено двойное касание. И приближает именно то место. По этой причине для реализации данной функции выбрано увеличение видоискателя, а не качественное приближение на сенсоре. Приближение на сенсоре на большинстве устройств возможно только посередине, и не дает преимущество приближения в любую точку изображения видоискателя.
При активации данной функции ход кольца-регулятора ручного фокуса увеличивается в два раза, т.е. оранжевая рабочая область становится больше в два раза. В этом состоянии черный индикатор положения фокуса может выходить за пределы экрана.
Данная функция может конфликтовать с настройкой скрытия отдельных блоков интерфейса, потому что скрытие блоков интерфейса происходит по касанию.
4:2:2
Мечтай дальше!
На сегодня данная субдискретизация недоступна на аппаратах на ОС Андроид.
Запись в формате RAW
Спустя несколько лет после обновления данной инструкции, мало, что поменялось. Единицы аппаратов способны осилить нагрузку при записи в RAW. Дополнительно наложились проблемы с доставкой материала до монтажной программы. Современная мобильная съемка не терпит таких препятствий, ищет более простые пути, поэтому в mcpro24fps это вряд ли будет реализовано.
Поддержка внешних стабилизаторов
На данный момент работа над поддержкой внешних стабилизаторов приостановлена. Каждый производитель посчитал своей обязанностью скрыть протоколы связи от сторонних приложений. Поэтому реализация поддержки оказалась задачей сложной и требующей много времени на подготовку и планирование.
Есть возможность активировать старт/стоп записи, если стабилизатор нажатием своей кнопки имитирует нажатие кнопок громкости. Для этого надо выбрать соответствующее значение в пункте 1.3.2.2.6. Кнопки громкости.