gpt4 book ai didi

在Linux中从一张图像更新创建电影

转载 作者:行者123 更新时间:2023-11-30 16:09:42 25 4
gpt4 key购买 nike

我是一名 Linux 上的 C 程序员。

我编写了一个程序,将图像保存在/srv/ftp/preview.png 中,该图像经常更新,我想根据此更新创建电影。

它的时间戳对我来说很重要,例如,如果图像在 3.654 秒后更新,我希望电影也在 3.654 秒后显示此更新(帧)。

我在互联网上搜索了几个小时,但找不到任何解决方案。

我了解 ffmpeg,但它会将图像(而不是一张图像)转换为电影,没有毫秒时间戳。

我找到了这个Question但在这种情况下似乎没有用。

有什么工具可以做到这一点吗?如果没有请引入c中的API自己写一个程序

最佳答案

您可以尝试使用inotify监视文件的修改,并使用ffmpeg将文件附加到电影中:

#!/bin/bash
FRAMERATE=1
FILE="/path/to/image.jgp"
while true
do inotifywait -e modify "$FILE"
echo "file changed"
# create temp file name
TMP=$(mktemp)

# copy file
cp "$FILE" "$TMP$

# append copy file to movie
# from https://video.stackexchange.com/q/17228

# if movie already exist
if [ -f movie.mp4 ]
then
# append image to a new movie
ffmpeg -y -i movie.avi -loop 1 -f image2 -t $FRAMERATE -i "$TMP".jpg -f lavfi -t 3 -i anullsrc -filter_complex "[0:v] [1:v] concat=n=2:v=1 [v] " -map "[v]" newmovie.avi
# replace old by new movie
mv newmovie.mp4 movie.mp4
else
#create a movie from one image
ffmpeg -framerate 1 -t $FRAMERATE -i "$TMP" movie.mp4
fi
rm "$TMP"

done

这个脚本当然必须进行调整(特别是如果您的帧速率很高),但我认为您可以尝试使用它。

还有一件坏事是,由于电影变大,电影创作会变得越来越慢。

您应该将特定时间段的图像存储在目录中并一次全部转换(例如每小时/每天一次)

<小时/>

如果您想提供流而不是创建视频文件,您可以查看 https://stackoverflow.com/a/31705978/1212012

关于在Linux中从一张图像更新创建电影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59064384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com