FFmpeg на iPhone

Я скачал библиотеки ffmpeg для iPhone и скомпилировал их. Моя цель — создать файл фильма из серии изображений с использованием библиотек ffmpeg. Объем документации для ffmpeg на iphone очень мал. Я проверил приложение под названием iFrameExtractor, которое делает противоположное тому, что я хочу, оно извлекает кадры из видео.

В командной строке есть команда

ffmpeg -f image2 -i image%d.jpg video.mov 

Это превращает серию изображений в видео. Я действительно проверил это на своем Mac, и он отлично работает. Что я хотел знать, так это то, как мы можем получить эквивалент в iPhone. Точнее, какой класс/api или метод вызывать. Есть несколько примеров приложений, делающих это на iPhone. Не уверен, что они делают это через ffmpeg. В любом случае, для справки "Time lapse" и "моменты роликов"

заранее спасибо


person user308990    schedule 10.05.2010    source источник
comment
Прочтите исходный код... синтаксический анализ командной строки должен быть довольно простым для понимания.   -  person Andrew McGregor    schedule 10.05.2010
comment
Привет, Эндрю... Спасибо за эту информацию... Но количество файлов огромно. Это почти как найти иголку в стоге сена. В любом случае, я попробую этот подход. Спасибо еще раз   -  person user308990    schedule 10.05.2010


Ответы (2)


Вам нужен звук? Если вам не нужен звук, вы можете попробовать использовать openCv. Я думаю, что это проще в использовании. Вы просто вызываете метод для добавления изображения к фильму: http://opencv.willowgarage.com/documentation/c/reading_and_writing_images_and_video.html

person oqu    schedule 10.05.2010
comment
Здравствуйте, olipion, спасибо за эту информацию... я проверю. Но работает ли это для iPhone? И мне не нужен звук, достаточно видео - person user308990; 11.05.2010
comment
Я так думаю. Я не использовал opencv для этого, но я использовал opencv для распознавания лиц на iphone. Я думаю, это должно сработать. - person oqu; 12.05.2010
comment
Я загрузил статические библиотеки openCv для arm (собственная архитектура инструкций iPhone), и библиотеки были сгенерированы просто отлично. Проблем с подключением к ним библиотек не возникло. В качестве первого шага я попытался создать файл .avi, используя одно изображение, чтобы посмотреть, работает ли он. Но cvCreateVideoWriter всегда возвращает мне значение NULL. Я немного поискал и думаю, что это из-за отсутствия кодека. Я пробую это на симуляторе iPhone. вот что я делаю... - person user308990; 14.05.2010
comment
- (void) viewDidLoad { [super viewDidLoad]; UIImage *anImage = [UIImage imageNamed:@1.jpg]; IplImage *img_color = [self CreateIplImageFromUIImage:anImage]; // Изображение создается просто отлично CvVideoWriter *writer = cvCreateVideoWriter(out.avi,CV_FOURCC('P','I','M','1'), 25,cvSize(320,480),1); // Writer всегда имеет значение null int result = cvWriteFrame(writer, img_color); NSLog(@\n%d,результат); //поэтому это тоже всегда 0 cvReleaseVideoWriter(&writer); } - person user308990; 14.05.2010
comment
Я не уверен насчет второго параметра. Что это за кодек или что именно он делает... Я ноль в этом. Какие-либо предложения? - person user308990; 14.05.2010

Кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь, но я не верю, что приложения для iPhone могут вызывать внешние исполняемые файлы (что имеет смысл, это будет многозадачность). Вам придется использовать libav*, чтобы выполнить то, что вам нужно. Скомпилируйте ffmpeg для iPhone:

http://github.com/gabriel/ffmpeg-iphone-build

и прочтите документацию по API на ffmpeg.org. Для каждой библиотеки в исходном коде ffmpeg должен быть файл примера, в котором показано использование основных функций этой библиотеки. то есть в libavcodec есть файл с именем api-example.c, а в libavformat есть файл с именем output-example.c.

person jtrim    schedule 12.05.2010
comment
Привет jtrim, спасибо за эту информацию. Буду проверять в документах. - person user308990; 14.05.2010