将提取的帧名存储在一个数组中 - ffmpeg
我是一个C的完整新手。我来自PHP背景,但碰巧我在PHP中编写的代码需要转换为C.它是Java在第一,但现在的要求是C.将提取的帧名存储在一个数组中 - ffmpeg
通过一些教程去后,我得到了C的基础知识和编码下面从交流程序中
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *app = "D:\\ffmpeg\\bin\\ffmpeg.exe -i";
char *input = " D:\\video.mpg";
char *output = " D:\\frames\\image%d.jpg";
char *param = " -r 10";
char str[300];
snprintf(str, sizeof str, "%s%s%s%s", app, input, param, output);
// str contains "D:\ffmpeg\bin\ffmpeg.exe -i D:\video.mpg -r 10 D:\frames"\image%d.jpg
system(str); // <-- working fine, frames are being extracted
/*
do something here to store each extracted frame in an array
so that the array contains image1.jpg, image2.jpg, image3.jpg...and so on
*/
getch();
return 0;
}
运行ffmpeg.exe
编译和运行程序,我正在按照预期的方式获取输出文件夹中的帧。问题是我想将每个帧名称存储在数组中,因为它被提取。到目前为止,我还没有遇到类似的问题,所以我决定为它创建一个新线程。我希望这是可能的,并希望在正确的方向推动。
现在由于文件名不会显示为使用popen输出到系统命令或fork不起作用。我会推荐你在输出目录(D:\ frames)上执行一个nftw。它会列出文件夹中的所有文件。
Yeh。其实这个选择在我心中。但是,在循环目录内的文件时,文件不会按照正确的升序排列。这很重要,因为我需要数组按照升序包含文件。正确的顺序 - image1,image2,image3 ..等等。在循环目录时显示的顺序 - image1,image100,image101,..等等 – asprin 2013-02-19 10:28:52
在这种情况下只计算文件夹中存在的所有文件。文件名将按顺序排列,因此您可以在运行时创建文件名。例如,如果有100个文件,则顺序文件名将从图像1到图像100 – Anshul 2013-02-19 10:31:01
这是一个很好的技巧。但我认为'nftw'是基于Linux的...而我在Windows上。 – asprin 2013-02-19 10:41:17
确实命令d:\ ffmpeg的\ BIN \ ffmpeg.exe -i d:\ video.mpg -r 10 d:\帧“\图像%D.JPG输出文件在标准输出的名称??? – Anshul 2013-02-19 10:18:35
我不知道'stdout' ....它的使用或如何在屏幕/终端上使用它 – asprin 2013-02-19 10:19:35
,可能你希望所有的文件名创建为D:\ frames \ image%d。 jpg在一个数组的权利??? – Anshul 2013-02-19 10:20:12