3

这是一个初学者的问题,因为我是iOS新手(我今天开始),所以请原谅我的无知和缺乏iOS知识。

在为 Android 构建并成功使用 FFMpeg 之后,我想为 iOS 做同样的事情。所以我按照这个链接成功地为 iOS 构建了 FFMpeg ,但是在经历了那么多痛苦之后,我对如何在 iOS 中使用 FFMpeg 感到困惑,我的意思是如何将命令行参数传递给libffmpeg.a文件?

我假设必须有一种方法可以将 .a 文件作为可执行文件运行,然后传递命令行参数并希望 FFMpeg 发挥作用,我在 Android 中也这样做了,而且效果很好。

我也知道我可以使用 ffmpeg.c 类并使用它的 main 方法,但问题仍然存在;如何传递这些命令行参数?

这里有什么我应该注意的吗,我现在正在做的事情是正确的,还是我的方法不够完善?

我想混合两个音频文件,所以这样做的命令是ffmpeg -i firstSound.wav -i secondSound.wav -filter_complex amix=inputs=2:duration=longest finalOutput.wav,我如何在 iOS 中做同样的事情?

有人可以对此有所了解吗?

4

2 回答 2

2

您不会将参数传递给 .a 文件,因为它是一个库文件。它是您构建应用程序的工具,可让您访问 ffmpeg 库提供的功能。我不确定 Android 的运行状况如何,但很可能它正在生成一个命令行可执行文件。

查看 ffmpeg 文档,可能有一种方法可以使用该库执行您想要的操作,但是不太可能将 ffmpeg 作为独立的、传入参数的二进制文件构建和运行。

于 2013-01-09T13:17:19.593 回答
2

你可以在你的main.c,当然你不会硬编码 args 这些只是为了说明

我假设您使用ffmpeg播放 ,因为您正在使用iframeextractor,实际上是您尝试做的事情的目标。

/* Called from the main */
int main(int argc, char **argv)

int flags, i;
/*
argv[1] = "-fs";
argv[2] = "-skipframe";
argv[3] = "30";
argv[4] = "-fast";
argv[5] = "-sync";
argv[6] = "video";
argv[7] = "-drp";
argv[8] = "-skipidct";
argv[9] = "10";
argv[10] = "-skiploop";
argv[11] = "50";
argv[12] = "-threads";
argv[13] = "5";
//argv[14] = "-an";
argv[15] = "http://172.16.1.33:63478/hulu-f4fa0821-767a-490a-8cb5-f03788760e31/1-hulu-f4fa0821-767a-490a-8cb5-f03788760e31.mpg";
argc += 14;
*/


/* register all codecs, demux and protocols */
avcodec_register_all();
avdevice_register_all();
av_register_all();


parse_options(argc, argv, options, opt_input_file);

. .. mo
} 
于 2013-01-09T15:20:07.733 回答