2013-01-09 2 views
3

Это вопрос для начинающих, так как я новичок в iOS (я начал его сегодня), поэтому, пожалуйста, извините мое невежество и отсутствие знаний iOS.Как передать аргументы командной строки FFMpeg в iOS

После создания и успешного использования FFMpeg для Android я хотел сделать то же самое для iOS. Итак, я создал FFMpeg для iOS, следуя этому link, но после всей этой боли я смущен как использовать FFMpeg в iOS, я имею в виду, как передать аргументы командной строки в файл libffmpeg.a?

Я предполагаю, что должен быть способ запуска .a-файла в качестве исполняемого файла, а затем передать аргументы командной строки и надеяться, что FFMpeg сделает магию, я сделал то же самое в Android, и он работал красиво.

Я также знаю, что могу использовать класс ffmpeg.c и использовать его основной метод, но вопрос остается; как передать эти аргументы командной строки?

Есть ли что-то, о чем я должен знать здесь, это то, что я делаю сейчас правильно, или я не согласен с моим подходом?

Мне захотелось смешать два аудиофайла, поэтому команда для этого будет ffmpeg -i firstSound.wav -i secondSound.wav -filter_complex amix=inputs=2:duration=longest finalOutput.wav, как мне сделать то же самое в iOS?

Может кто-то пролить свет на это?

ответ

2

Вы не передаете аргументы в файл .a, так как это файл библиотеки. Это то, с чем вы строите свое приложение, предоставляя вам доступ к функциям, предоставляемым библиотекой ffmpeg. Я не уверен, что такое состояние игры с Android, но, скорее всего, оно генерирует исполняемый файл командной строки.

Посмотрите документацию по ffmpeg, вероятно, есть способ сделать то, что вы хотите, с библиотекой, однако создание и запуск ffmpeg как отдельного, двоичного, двоичного, маловероятно.

+0

Таким образом, в классе ffmpeg.c нет обработчика, который может принимать аргументы командной строки? –

+0

Нет, файл ffmpeg.c по существу является исходным файлом, библиотеки не принимают аргументы, они просто предоставляют функциональность. Что у вас на Android, скорее всего, есть двоичный файл ffmpeg, у вас есть библиотека. Файл .a является «статической библиотекой», см.: Http://en.wikipedia.org/wiki/Static_library –

2

Вы можете сделать это в вашем main.c, и, конечно, вы не жёстко арга это лишь для иллюстрации

Я предполагаю, что вы используете 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 
} 
+0

также посмотрите на это, чтобы узнать, как вызвать https://github.com/mooncatventures-group/RTSPPlay/ blob/master/uikit/SDL_uikitappdelegate.m –

+0

Я хочу использовать два аудио- или видеофайла, у меня есть команда для этого, но не была уверена, как это сделать в iOS –

+0

Возможно, не будет использовать ffmpeg для микширования аудиофайлов в iOS , audio toolbox api в iOS намного лучше для этого, декодировать оба потока отдельно и определять аудиоустройство. см. пример аудиомикшера на портале apple. Что касается микширования видео, IOS поддерживает стандартные соглашения о вызове c, но вам нужно использовать статические библиотеки ffmpeg, как это было с игроком. –

Смежные вопросы