1

Я использую Ffmpeg для непрерывной записи видеоизображения на моем ПК. Тем не менее, мне нужны только последние 5 минут видео.FFmpeg: Запишите экран, но помните только последние 5 минут?

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

Есть ли способ запомнить только последние 5 минут видеозахвата и забыть все предыдущее перед сохранением файла? (Вроде как TiVO бы)

Я нашел

-fs limit_size 

и

-timelimit duration 

..но это, кажется, чтобы остановить после того, как достигнут предел. Может быть, есть инверсный переключатель? Как только сохранить последние 1000000 байт или что-то еще.

+0

Нет такой функции, насколько я знаю. Попробуйте представить исправление, реализующее это, или сделав запрос функции на [трекер ошибок] (http://trac.ffmpeg.org/). Один из вариантов - использовать [сегментный мукс] (https://ffmpeg.org/ffmpeg-formats.html#segment_002c-stream_005fsegment_002c-sesegment) с опцией '-segment_time', а затем как-то избавиться от старых сегментов в соответствии с вашими требованиями. – LordNeckbeard

ответ

1

Я согласен с тем, что мне хотелось бы увидеть эту функцию в ffmpeg.

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

#!/bin/bash 
set -e -u 

mkdir "$HOME/history" || true 
rm "$HOME"/history/img*.png || true 

# Get screen resolution. 
RES="$(xwininfo -root | grep -Po 'geometry[^+]*' | sed 's/^\S* //')" 

# Record the screen into images into /home/username/history/ one per second. 
avconv -s "$RES" -f x11grab -i :0.0 -r 1 -f image2 "$HOME/history/img%06d.png" & 

AVCONV_PID=$! 

trap "kill $AVCONV_PID" INT TERM EXIT 

while true; do 
    # Delete screen images older than 5 minutes. 
    find "$HOME/history" -name "img*.png" -mmin +5 -exec rm {} + 
    sleep 10 
done 

Если вы хотите 5 кадров в секунду, изменить часть -r 1 к -r 5. См. Эту ссылку how to assemble the images into a video (avi, mpeg) file.

PS.
Вы также можете использовать ffmpeg вместо avconv.

 Смежные вопросы

  • Нет связанных вопросов^_^