【问题标题】:FFmpeg: Record the screen but only remember the last 5 minutes?FFmpeg:录屏但只记得最后5分钟?
【发布时间】:2013-12-04 10:18:30
【问题描述】:

我正在使用 Ffmpeg 在我的 PC 上连续录制视频。但是,我只需要视频的最后 5 分钟。

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

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

我找到了

-fs limit_size

-timelimit duration

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

【问题讨论】:

  • 据我所知没有这样的功能。考虑提交实现此功能的补丁或在bug tracker 上提出功能请求。一种选择是将segment muxer-segment_time 选项一起使用,然后根据您的要求以某种方式处理旧段。
  • segment muxer: -f segment -segment_time 60 -segment_wrap 2 output%d.mkv 是可能的。感谢@Gyan。看到这个answer

标签: ffmpeg video-streaming video-capture screen-capture pyffmpeg


【解决方案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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2013-10-28
    相关资源
    最近更新 更多