1

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

在阅读了一些教程之后,我掌握了 C 的基础知识并编写了以下代码以ffmpeg.exe在 ac 程序中运行

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

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

4

1 回答 1

1

现在,由于文件名不显示为系统命令的输出,因此使用 popen 或 fork 将不起作用。我建议您在输出目录(D:\frames)上执行 nftw。它将列出文件夹中的所有文件。

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

于 2013-02-19T10:24:51.163 回答