Android Screen-запись всего экрана

У меня проблема с записью экрана в Android. Я ищу способ записи экрана. Подход, который я ищу, должен соответствовать следующим требованиям:

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

б) Он должен работать на устройствах Tegra2 или Tegra3, таких как Nexus 7. Таким образом, подходы с буферизацией кадров не дадут ожидаемого результата для меня.

c) Должна быть возможность записи в полноэкранном режиме в фоновом режиме с помощью службы. Таким образом, это не должно ограничиваться моим собственным приложением.

г) он должен быть запущен только на устройстве. Таким образом, подключение к ПК не требуется.

Что я пробовал до сих пор:

1) Я пытался использовать потрясающую новую функцию записи экрана Android 4.4. Итак, я получил права root и выполнил команду из моего приложения. Это прекрасно работает, но у подхода есть две проблемы:

я) я не нашел способ остановить текущую запись.

ii) Запись ограничена 3 минутами. Мне нужно как минимум 10 минут.

2) Я реализовал подход, который делает снимки экрана во время работы службы и сохраняет их в папке на SD-карте. Это делается с помощью /system/bin/screencap -p команда. Однако этот подход действительно медленный. Снимок экрана снимается только каждую секунду, так что я получаю только частоту кадров в секунду, равную 1. Однако моя цель не состоит в том, чтобы достигать скорости 30 кадров в секунду. Достаточно было бы 6-8 кадров в секунду. Более того, я не нашел способа кодировать файлы.png в виде видео.

В магазине приложений я нашел приложение (SCR Screen Recorder), которое способно сделать именно то, что я ищу. Итак, я думаю, что это возможно. Тем не менее, мое приложение должно быть в состоянии сделать это без дополнительных приложений. Таким образом, Намерение не вариант для меня.

С наилучшими пожеланиями, мистер-гадюка

ОБНОВЛЕНИЕ 1 Так что теперь я могу запускать и останавливать запись экрана для Android 4.4 программно. Здесь важно не убивать процесс записи экрана, используя стандартную команду kill. Вы должны использовать kill -SIGINT <pid> Команда - в противном случае вы получите и видео файл coruppted. PID процесса записи экрана можно получить, позвонив ps screenrecord а затем выполнить некоторую обработку полученной строки. Теперь мне нужен только подход для программного объединения всех видеофайлов.

ОБНОВЛЕНИЕ 2 Наконец, я также управлял последней частью. Во-первых, я использую Timer и TimerTask, которые позволяют мне начинать новую запись экрана каждые 3 минуты, пока пользователь не остановится. Используя решение, описанное в Update1, я остановил запись. После полной записи я начинаю этап постобработки. На этом этапе я использую библиотеку mp4parser для объединения видеофайлов в один. Ответ на этот вопрос также был доступен здесь при нажатии на кнопку stackru.

Спасибо всем за ваши ответы. Под требования root-доступа и Android 4.4 у меня сейчас работает запущенная запись экрана. Для моих целей это хорошо. Тем не менее, я думаю, что есть достаточно разработчиков, у которых есть другие требования. Так что не стесняйтесь отвечать здесь, если у вас есть дальнейшие идеи.

0 ответов

Другие вопросы по тегам