FFmpeg:录制屏幕但只记得最后5分钟?

sim*_*son 6 ffmpeg video-capture screen-capture video-streaming pyffmpeg

我正在使用 Ffmpeg 在我的电脑上连续录制屏幕上的视频。然而,我只需要视频的最后 5 分钟。

是的,我可以稍后编辑视频。但这些录制会话可能会持续几个小时并占用大量硬盘空间。

有没有办法只记住视频捕获的最后 5 分钟并忘记保存文件之前的所有内容?(有点像TiVO)

我发现了

-fs limit_size
Run Code Online (Sandbox Code Playgroud)

-timelimit duration
Run Code Online (Sandbox Code Playgroud)

..但是一旦达到限制,这些似乎就会停止。也许有一个反向开关?喜欢只保留最后 1000000 字节之类的。

Sep*_*ero 4

我同意我很想在 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
Run Code Online (Sandbox Code Playgroud)

如果您想要每秒 5 张图片,请将部分更改-r 1-r 5。请参阅此链接如何将图像组合成视频(avi、mpeg)文件

附言。
您也可以使用 ffmpeg 代替 avconv。