如何使用ffmpeg.exe命令行从硬盘上的多个图像创建视频文件?

时间:2016-07-21 21:49:03

标签: c# .net winforms ffmpeg

在命令提示符窗口中,我输入了图像目录:

D:\ SavedScreenshots> ffmpeg.exe -r 3 -i Imgp%04d.bmp -s 720x480 test.avi

图像文件是Bmp类型。 第一个图像文件名是:screenshot0.bmp 最后一个是:screenshot168.bmp

一个图像细节的示例:宽度1920高度1080位深度32

ffmpeg.exe文件位于图像的同一目录中。

在提示窗口控制台输出中,我看到:

[image2 @ 00000000025624a0]找不到路径为“Imgp%04d.bmp”的文件,索引范围为0-4 Imgp%04d.bmp:没有这样的文件或目录

然后我应该怎么做命令行?

我发现了问题,现在它正在运行,但这很奇怪。

在c#中我创建我的桌面的截图这个图像在硬盘上我要创建视频文件。 在c#中我做了一个计时器嘀嗒事件:

int count = 0;
        private void timer1_Tick(object sender, EventArgs e)
        {
            Bitmap bmp = new Bitmap(sc.CaptureScreen());
            bmp.Save(@"D:\SavedScreenshots\screenshot" + count + ".bmp");
            bmp.Dispose();
            count ++;
        }

这将图像保存在硬盘上,所有图像的大小介于每个文件129-132kb之间。我可以编辑/打开图像并看到它们没有问题,但ffmpeg无法处理它们给了我这个错误。

现在我将c#中的代码更改为:

bmp.Save(@"D:\SavedScreenshots\screenshot" + count + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);

我添加了部分:System.Drawing.Imaging.ImageFormat.Bmp

现在每个图像文件大小约为7MB !!!! 现在ffmpeg可以使用命令行处理它:

ffmpeg.exe -framerate 3 -i screenshot%d.bmp -vf scale=ntsc,setdar=16/9 test.avi

我想知道为什么当图像大小为130KB时ffmpeg无法处理它没有找到文件或目录,当它们是7MB时它确实找到并创建了视频文件?

即使现在我输入命令行:

ffmpeg  -i screenshot%03.bmp -s 720x480 test.avi

我得到的不是这样的文件或目录

仅当我输入时:

ffmpeg  -i screenshot%d.bmp -s 720x480 test.avi

它正在运作。

为什么在做截图%3.bmp时它不起作用但截图%d.bmp确实有效?

还做截图.bmp工作。只有截屏%3.bmp不起作用。 在所有的例子中,我看到我必须制作截屏%3或%2,但是他们给我的错误没有这样的目录文件。

2 个答案:

答案 0 :(得分:0)

由于你的图像文件'名称为screenshotxxx.bmpffmpeg的输入参数应为-i screenshot%3d.bmp

答案 1 :(得分:0)

如果您的文件名序列顺序不包含统一填充,则可以使用

ffmpeg.exe -framerate 3 -i screenshot%d.bmp -vf scale=ntsc,setdar=16/9 test.avi

我认为您的意思是调整为NTSC宽,即720x480,显示宽高比为16:9。