我正在使用Ffmpeg在我的电脑上连续录制屏幕上的视频。但是,我只需要视频的最后5分钟。
是的,我之后可以编辑视频。但是这些录制会话可能会持续几个小时并占用大量硬盘空间。
有没有办法只记住视频捕获的最后5分钟而忘记保存文件前以前的所有内容? (有点像TiVO会这样做)
我找到了
-fs limit_size
和
-timelimit duration
..但是一旦达到限制,这些似乎就会停止。也许有一个倒置的开关?喜欢只保留最后1000000字节或其他东西。
答案 0 :(得分: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。