我编写了一些图像采集软件,当我采集这些图像时,我想将最后一个图像添加到视频文件的末尾(到目前为止采集的所有图像的延时)。这将提供所有图像的视频视图。
然而,我正在努力尝试添加单帧。我已经生成了延时罚款。我这样做的方式是等待收集到 10 张图像,然后生成延时图像。我用来生成要添加帧的延时的命令是:
-帧速率 40 -start_number N -i DSC_%05d.JPG -c:V libx264 -r 30 输出.mp4
我尝试了几种不同的方法,所有方法都几乎有效,但没有一个完全按照需要工作。这是我尝试过的,使用什么命令以及输出是什么:
用于将 JPG 连接到 MP4 的 Concat Demuxer
包含用于连接的文件列表的文本文件如下所示:
文件“B00334_1.mp4”
文件“test_image.jpg”
持续时间 10
我用来尝试加入文件的命令是:
ffmpeg -f concat -i concat.txt -c 复制输出文件.mp4
此尝试的输出是一个未损坏的视频(得分!),但它仅显示第一个视频,并且不显示新帧的任何迹象,尤其是在指定的 10 秒内。(我不希望它在那里停留 10 秒,比如 0.1,但是我使用 10 秒只是为了让我可以很容易地看到何时成功)。
将 JPG 转换为 MP4,然后 Concat Demuxer
所以我想;也许它需要第二个视频而不是图像,所以我将创建一个短的、帧长的视频并将其附加到延时的末尾。
用于从 JPG 创建 MP4 的命令:
fmpeg -loop 1 -i test_image.jpg -r -t 5 test_video.mp4
这会生成很好的视频,我得到一个 5 秒长的视频,显示静止图像。该视频不加载缩略图,我不确定这是否意味着什么。现在 concat.txt 文件如下所示:
文件“B00334_1.mp4”
文件“text_video.mp4”
运行相同的命令来调用第一个示例中显示的文本文件后,我得到第一个文件的输出(延时)+串联视频的时间(成功!?)。然而,一旦到达视频中应该显示图像的位置,它只会显示延时拍摄的最后一帧,并且会在第二个视频的 5 秒内向下出现故障。基本上根本不显示第二个视频,无论第二个视频是最后一帧多久,都会出现故障。
将 JPG 和 MP4 转换为 …