2009-11-05 2 views
10

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

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

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

Если кто-нибудь может мне помочь, я бы очень grateful..`

Благодаря

Орельен Потье

+2

Обязательно соблюдайте LGPL, если вы используете ffmpeg. –

+1

Кроме того, если вы планируете подавать свое приложение в App Store, имейте в виду юридические последствия продажи программного обеспечения, которое использует ffmpeg. Он может нарушать патенты в вашей юрисдикции (http://ffmpeg.org/legal.html). Это также может повлиять на вашу способность получить одобрение в App Store. –

+1

Да, вам нужно будет отпустить либо ваш исходный код, либо ваш объектный код для вашего приложения, чтобы соответствовать LGPL при использовании ffmpeg в качестве статической библиотеки: http://huyzing.com/2009/08/24/compatibility- Между-iphone-app-store-and-the-lgpl/ –

ответ

8

В меню Проект выберите Edit Активный Target "[...]".

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

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

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

  • С выбранной строкой пути поиска библиотеки, нажмите кнопку в левом нижнем углу того же окна и выберите Add Build Setting Condition;
  • Где появляется «Any SDK», выберите «Any iPhone OS Simulator» и укажите путь к двоичным файлам x86 ffmpeg.
  • Повторите шаги, описанные выше, заменив «Любой iPhone OS Simulator» на «Any iPhone OS Device» и укажите двоичные файлы ARM ffmpeg.

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

alt text

11

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

Некоторые подробнее в этом блоге:

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

+1

Я пытался заставить его работать, но когда я это делаю ./build_universal «липо» -инструкции в файле кажется, терпят неудачу, и я заканчиваю без файлов * .a. Я получаю эту ошибку: 'lipo: указанный тип архитектуры (armv6) для файла (armv6/libavcodec.a) не соответствует его cputype (16777223) и cpusubtype (3) (должен быть cputype (12) и cpusubtype (6))' для каждой из команд lipo –

+0

Чтобы исправить это, следуйте этой теме http://stackoverflow.com/questions/6994151/problem-compiling-ffmpeg-for-iframeextractor – deimus

4

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