Компиляция ffmpeg для iPhone SDK (Символ (ы) не найден - Линкер) - PullRequest
5 голосов
/ 16 января 2011

Я использую ffplay в своем приложении.Я реализовал библиотеки, которые использовались в этом проекте: http://code.google.com/p/ffmpeg4iphone/downloads/detail?name=ffplay-xproj.zip&can=2&q=

Но я видел, что эти источники очень старые (апрель 2009 г.).В моем проекте я хотел создать новые библиотеки, а затем изменить их следующим образом.

Что я сделал:

  1. Загрузил исходный код ffmpeg: (используя командную строку: svn checkoutsvn: //svn.ffmpeg.org/ffmpeg/trunk ffmpeg)
  2. Скомпилировал проект со специальными опциями ./configure и газовым процессором: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-October/076618.html
  3. Я только изменил здесьПути к фактическим местоположениям для iPhone SDK 4.1
  4. Изменен путь к заголовку в настройках проекта xCode Active Target для моей папки ffmpeg
  5. Включены файлы .a в мой проект в xCode
  6. Добавлены другие флаги компоновщика -lm -lbz2 -lz
  7. Попытка построить мое приложение, но я получаю некоторые ошибки компоновщика, когда символ (ы) не найден.

Неопределенные символы: "avcodec_init ()", на которые ссылаются из:

И другие ошибки почти одинаковы (_av_codec .....)

Как правильно построить его?

Ответы [ 2 ]

1 голос
/ 16 января 2011

Я нашел решение: я установил архитектуру на Optimized (arm7), а затем все заработало.

Еще один вопрос: я использую ffmpeg для потоковой передачи онлайн-потока.Какие значения я должен установить, чтобы получить хорошее качество потоковой передачи, даже когда я нахожусь в 3G.Вот что я сделал:

  • установил аудио-буфер на 1024
  • установил низкое значение mpeg на 3
0 голосов
/ 16 января 2011

Не уверен, используете ли вы компилятор C или C ++ (g ++), но попробуйте защитить ваш #include для ffmpeg с помощью extern "C": компилятор c ++ (если он используется), вероятно, искажает имена функций и, следовательно, ссылку ошибки.

Попытайтесь включить ваш включаемый файл с внешним "C":

#ifdef __cplusplus
extern "C" {
#endif 

#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>

#ifdef __cplusplus
}
#endif 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...