Я хочу написать скрипт, который запускает adb shell screenrecord
в фоновом режиме моего скриптового цикла. Скрипт зацикливания будет ожидать в меню, ожидая, пока пользователь прочитает ввод из 1 символа.
Когда пользователь нажимает любую клавишу, я хочу автоматически остановить запись экрана и перетащить видеофайл на компьютер пользователя.
Кроме того, мне нужно будет установить таймер обратного отсчета, который будет отображаться на экране после начала записи экрана, чтобы они знали, как близко они к 3-минутному пределу;
. .using printf "\r%*s" ((0)) "$remainingTime"
в for
l oop, например.
Это общая идея того, что я пытаюсь сделать:
fileName="rec.$$.mp4"
record(){
adb shell screenrecord /sdcard/$fileName &
read -n 1 -s -r -p ''
#EOF represents where the screenrecord command expects the EOF signal
EOF
}
extract(){
adb pull sdcard/$fileName
}
record | wait && extract
exit
Использование этого метода для прерывание записи экрана (при замене EOF на return
или kill "$childPID"
) может быть проблемой, но я нигде не могу найти, как выполнить sh прерывание EOF, чтобы избежать повреждения созданного видеофайла.
Прямо сейчас он прерывает с заменой EOF и также извлекает файл, но извлеченный файл всегда поврежден.
Есть идеи?
Я пытался добавить * 1 027 * и использует различные типы прерываний для замены сигнала EOF, но безрезультатно.
Это дает идентичные результаты; поврежденный видеофайл.
#!/bin/bash
set -x; clear
fileName="rec.$$.mp4"
record(){
adb shell screenrecord /sdcard/$fileName & childPID=$!
read -n 1 -s -r -p ''
kill "$childPID"
wait "$childPID"
}
extract(){
adb pull sdcard/$fileName
}
record | wait && extract; exit
Замена команды kill
на exit
также дает идентичные результаты.