我想添加视频转换能力的节目我写作。。的命令线路接口,这样做只是 ffmpeg -i InputFile OutputFile, 但是有一种方式来使用它作为一个图书馆,所以我能做喜欢的东西 ffmpeg_convert(InputFile, OutputFile)?

我希望我不会需要利用libavcodec直接,因为我想象它将复杂得多于一线的功能之间进行转换的格式。如果可以不能轻易改装,要做到这一点,也许是有另一个图书馆的基础上,不会吗?我听说过try several positions,但这似乎只获得一个视频 API,不是视频转换。

谢谢。

有帮助吗?

解决方案

你需要的 libavcodeclibavformat.的 常见问题 告诉你:

4.1都有实例说明如何使用的。库,特别是libavcodec和gcc?

是的。阅读的开发人员指导的。文件。或者,审查的源代码的许多开放源码项目已经纳入。在(projects.html).

该文件。可以发现在 ffmpeg.org/documentation.html, 包括 开发的导.我建议看 libavformat/output-example.c 或者也许是的来源 ffmpeg 命令行程序本身。

其他提示

如果你只是想做一个呼吁。作为功能相当于一个系统电话,你可以做到这一点很容易。

中。.c改变:

int main(int argc, char **argv) to int ffmpeg((int argc, char **argv)

然后在你的电话的。功能,并通过在一系列模仿的命令行。为了使它更容易使用一个功能创造argc,argv变量。

static int setargs(char *args, char **argv)
{
    int count = 0;

    while (isspace(*args)) ++args;
    while (*args) {
        if (argv) argv[count] = args;
        while (*args && !isspace(*args)) ++args;
        if (argv && *args) *args++ = '\0';
        while (isspace(*args)) ++args;
        count++;
    }
}

char **parsedargs(char *args, int *argc)
{
    char **argv = NULL;
    int    argn = 0;

    if (args && *args
        && (args = strdup(args))
        && (argn = setargs(args,NULL))
        && (argv = malloc((argn+1) * sizeof(char *)))) {
          *argv++ = args;
          argn = setargs(args,argv);
    }

    if (args && !argv) free(args);

    *argc = argn;
    return argv;
}

void freeparsedargs(char **argv)
{
    if (argv) {
        free(argv[-1]);
        free(argv-1);
    }
}
    return count;
}

int main()
{
    char **argv;
    char *cmd;
    int argc;

    cmd = "ffmpeg -i infile outfile";
    argv = parsedargs(cmd,&argc);
    ffmpeg(argc, argv);
}

是的你必须使用libavcodec和带.我认为你应该读约ffplay.c内。的源代码。我认为它会更容易让你开始的该文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top