Intereting Posts
Может ли телефон притворяться клавиатурой Bluetooth? Загрузка PDF через веб-браузер и веб-просмотр Android обнаруживает Bluetooth-разъединение сразу 2-столбце TableLayout с 50% точно для каждого столбца Android SDK Manager не показывает какие-либо пакеты для установки Как сделать макет с View заполнить оставшееся пространство? Клавиатура перестала работать на эмуляторе Intel x86 Android после обновления до ADT 20 Равномерно разнесенные пункты меню на Панели инструментов Использование tesseract на android Изменение формы сплошной цвет во время выполнения внутри Drawable xml, используемого в качестве фона Android Динамически загружает Listview в конец прокрутки? Прикрепление отладчика к Android-процессу автоматически в Android Studio Использование ZXing для создания приложения сканирования штрих-кода для Android Каков правильный способ реализации Android-виджета с динамически созданным контентом? Использование аппаратного уровня в пользовательском представлении onDraw

Запись на экране приложения In-App на Android для захвата 15 кадров в секунду

После многих поисков и дней экспериментов я не нашел прямого решения.

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

Есть ли какой-либо «простой» способ захвата экрана самого приложения?

Я нашел обходное решение (чтобы сохранить некоторые растровые изображения каждую секунду, а затем передать их кодеру), но он кажется слишком тяжелым. Я буду рад даже с частотой кадров 15 кадров в секунду

Это кажется возможным, т. Е. Есть аналогичное приложение, которое делает это, его называют «Talking Tom»,

Solutions Collecting From Web of "Запись на экране приложения In-App на Android для захвата 15 кадров в секунду"

Это действительно зависит от того, как вы реализуете свое «домашнее животное». Вы рисуете на холсте? OpenGl ES? Обычная иерархия Android?

Во всяком случае, нет волшебного «recordScreenToVideo ()», как в одном из комментариев.

Тебе нужно:

  • Получите растровые изображения, представляющие ваши «рамки». Это зависит от того, как вы реализуете свое представление. Если вы нарисуете себя (Canvas или OpenGL), сохраните буферы исходного пикселя в качестве фреймов. Если вы используете обычную иерархию представлений, подкласс Android onDraw и сохраните «фреймы», которые вы получаете на холсте. Частота вызова системы onDraw будет не меньше фактической «частоты кадров» экрана. При необходимости дублируйте кадры после этого, чтобы предоставить видео с частотой 15 кадров в секунду.

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

Способы оптимизации кодирования:

  • Кэш ваших растровых изображений (кадров) и кодирование впоследствии. Это будет работать только в том случае, если ожидаемое видео будет относительно коротким, иначе вы выйдете из хранилища.
  • Запись выполняется только с частотой кадров, создаваемой вашим приложением (в зависимости от того, как вы рисуете), и используйте параметр энкодера для генерации видео с частотой 15 кадров в секунду (без фактического питания 15 кадров в секунду).
  • Отрегулируйте настройки качества на текущем устройстве. Это можно сделать, выполнив скрытый тест цикла ЦП при запуске приложения и определив некоторые пороговые значения.
  • Кодировать только наиболее релевантную часть экрана.
  • Опять же, действительно в зависимости от того, как вы реализуете – если вы можете сохранить некоторые «исторические данные», а затем преобразовать это в рамки без необходимости делать это в режиме реального времени, это было бы лучше. Например, «перемещение», «улыбка», «изменение цвета» – или любая ваша бизнес-логика, поскольку вы не уточнили об этом. Ваша функция «генерировать фильм» будет анимировать эти данные истории как последовательность кадров (без рисования на экране), а затем закодировать.

надеюсь, это поможет