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 у меня сейчас работает запущенная запись экрана. Для моих целей это хорошо. Тем не менее, я думаю, что есть достаточно разработчиков, у которых есть другие требования. Так что не стесняйтесь отвечать здесь, если у вас есть дальнейшие идеи.