将提取的帧名称存储在数组中 - ffmpeg

时间:2013-02-19 10:09:51

标签: c arrays image-processing ffmpeg

我是C的完全新手。我来自PHP背景,但碰巧我在PHP中编写的代码需要转换为C.最初是Java,但现在要求是C

在完成一些教程之后,我获得了C的基础知识并编写了以下内容以便在c程序中运行ffmpeg.exe

#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;
}

在编译和运行程序时,我按预期在输出文件夹中获取帧。问题是我希望在提取时将每个帧名称存储在数组中。到目前为止,我还没有遇到类似的问题,所以我决定为它创建一个新的线程。我希望这是可能的,并希望在正确的方向上轻推。

1 个答案:

答案 0 :(得分:1)

现在由于文件名不显示为使用popen或fork输出到系统命令将无法正常工作。我会重新命令你在输出目录(D:\ frames)上执行nftw。它将列出文件夹中的所有文件。

示例代码: http://linux.die.net/man/3/nftw