Использование библиотеки FFMPEG с iPhone SDK для кодирования видео

Мне нужно закодировать несколько изображений, снятых камерой iPhone, в видеофайл в формате mp4, и я знаю, что FFMPEG может это сделать (приложение TimeLapser и ReelMoments уже делают это). Я планирую использовать это в своем приложении iMotion (доступно в магазине приложений).

Я успешно установил и скомпилировал ffmpeg для iphone SDK по этой ссылке: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-October/076618.html

Но теперь я застрял в своем проекте XCode. Что мне делать дальше, чтобы использовать библиотеку FFMPEG для кодирования видео? Документация Apple об использовании внешних библиотек очень легкая, и я просто могу найти в Интернете любой учебник, в котором объясняется, как это сделать.


person Community    schedule 05.11.2009    source источник
comment
Обязательно соблюдайте LGPL, если вы используете ffmpeg.   -  person Kenny Winker    schedule 05.11.2009
comment
Кроме того, если вы планируете отправить свое приложение в App Store, имейте в виду, что продажа программного обеспечения, использующего ffmpeg, может иметь юридические последствия. Это может нарушать патенты в вашей юрисдикции (ffmpeg.org/legal.html). Это также может повлиять на вашу возможность получить одобрение в App Store.   -  person Nick Haddad    schedule 05.11.2009
comment
Да, вам нужно будет выпустить исходный код или объектный код для вашего приложения, чтобы соответствовать LGPL при использовании ffmpeg в качестве статической библиотеки: huyzing.com/2009/08/24/   -  person Brad Larson    schedule 05.11.2009
comment
iOS уже поддерживает кодирование h.264 с помощью встроенного оборудования через класс AVAssetWriter. См. stackoverflow.com/questions/2563212/create-video -in-iphone /   -  person MoDJ    schedule 17.06.2013


Ответы (3)


Ознакомьтесь с проектом iFrameExtractor на github. Хотя это не совсем то, что вы ищете, в нем есть сценарии для создания библиотек ffmpeg, а проект xcode связывает библиотеки.

Дополнительная информация в этом сообщении в блоге:

http://www.codza.com/extracting-frames-from-movies-on-iphone

person lajos    schedule 10.02.2010
comment
Я пытался заставить его работать, но когда я делаю ./build_universal, липо-инструкции в файле, похоже, не работают, и я остаюсь без файлов * .a. Я получаю эту ошибку: lipo: specifed architecture type (armv6) for file (armv6/libavcodec.a) does not match it's cputype (16777223) and cpusubtype (3) (should be cputype (12) and cpusubtype (6)) для каждой из команд липо - person Robin Rye; 09.08.2011
comment
Чтобы исправить это, следуйте этой теме stackoverflow.com/questions/6994151 / - person deimus; 21.06.2012

В меню "Проект" выберите "Редактировать активную цель" [...] ".

Затем в разделителе сборки убедитесь, что у вас выбрана вся конфигурация, и выполните следующие действия:

  • найдите «Пути поиска заголовков» и укажите, где расположены заголовки FFmpeg;
  • найдите «Пути поиска в библиотеке» и укажите, где находятся скомпилированные двоичные файлы статической библиотеки (файлы .a).

Это должно сработать, но в последнем есть еще одна хитрость. Вы можете добавить условие сборки в «Пути поиска в библиотеке», чтобы компилятор использовал разные двоичные файлы для разных архитектур, то есть вы можете легко компилировать как для симулятора, так и для устройства. Инструкция ниже.

  • Выделив строку «Пути поиска библиотеки», нажмите кнопку в левом нижнем углу того же окна и выберите «Добавить условие настройки сборки»;
  • Там, где отображается «Any SDK», выберите «Any iPhone OS Simulator» и укажите путь к двоичным файлам x86 ffmpeg.
  • Повторите описанные выше шаги, заменив «Any iPhone OS Simulator» на «Any iPhone OS Device» и укажите двоичные файлы ARM ffmpeg.

Ниже приведен пример такого рода настроек сборки.

alt text

person jpedroso    schedule 05.11.2009

Другой вариант - использовать FFMPEG на сервере. Отправьте изображения на сервер и используйте PHP с ffmpeg для преобразования видео. Благодаря этому вам не придется беспокоиться о компиляции FFMPEG на устройстве. Просто мысль

person Tony    schedule 10.02.2011