FFMPEG unter Snow Leopard richtig kompilieren und in Objective C++ nutzen

  • FFMPEG unter Snow Leopard richtig kompilieren und in Objective C++ nutzen

    Hi miteinander,
    seit Tagen versuche ich nun FFMPEG auf meinem MBP mit SnowLeopard zum laufen zu bekommen.

    Folgendes habe ich gemacht:

    1. MacPorts installiert
    2. FFMPEG installiert (fmpeg @0.7.13_2+gpl2+mmx (active) )
    3. Neues Xcode Projekt gestartet. Zum Test erstmal eine Consolenanwendung mit C++
    4. Header Search path auf opt/local/include rekursiv gesetzt
    5. Library Search Paht auf opt/local/lib
    6. libavcodec.a, libavdevice.a, libavfilter.a, libavformat.a per Drag&Drop (ohne kopieren) ins Dokument eingebunden
    7. main.cpp -> extern "C"{ #include "avcodec.h" #include "avformat.h"}
    8. und dann in der Main-Methode av_register_all();




    Folgendes passiert nun:

    /Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/i686-apple-darwin10/x86_64/bits/c++locale.h:79:28:{80:23-80:28}: error: no member named 'vsnprintf' in namespace 'std'; did you mean 'vsprintf'? [3]
    (rot markiert der Fehler)








    #ifdef _GLIBCXX_USE_C99

    const int __ret = std::vsnprintf(__out, __size, __fmt, __args);

    #else

    const int __ret = std::vsprintf(__out, __fmt, __args);

    #endif


    /Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/i686-apple-darwin10/x86_64/bits/c++locale.h:79:60:{80:23-80:37}{80:60-80:66}: error: too many arguments to function call, expected 3, have 4 [3]


    Xcode Project Settings (Screenshot):
    [Blockierte Grafik: http://www.abload.de/img/screenshot2012-08-30amju0m.png]


    Ich versteh irgendwie nicht was da los ist, wieso ist es so schwer die FFMPEG Library zu nutzen? Hat MacPorts das falsch kompiliert, habe ich was vergessen?

    VG
    mh

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von mham87 ()

  • Neue Erkenntniss: Ich habe die Rekursivsuche der Header Search Pathes entfernt und nun kriege ich hunderte von Fehlermeldungen. Anschließend habe ich ffmpeg komplett mit port uninstall deinstalliert und neu installiert. Im Projekt habe ich nun nur die dylibs eingebunden, nicht einmal die Headerfiles. Was muss ich denn dann beachten wenn ich das Programm auf einem anderen Mac nutzen will? Muss derjenige die FFMPEG Libs installiert haben?
  • Wenn Du gegen Shared Libraries (dylib) linkst, muss der Anwender deines Programms natürlich auch diese Libraries installiert haben. Eventuell reicht es auch aus, diese im Bundle zur Verfügung zu stellen. Allerdings bin ich gerade nicht sicher, wie das lizenztechnisch bei FFMPEG aussieht.
  • Ah ok, das check ich mal. Ich habe gerade versucht mit dem Tutorial von drangler (der aktualisierten Version) testweise ein Videofile einzulesen. Leider bekomme ich immer: Codec not supported. Habs mit verschiedenen Codecs probiert h264, Mpeg

    So sieht meine Konfiguration von FFMPEG aus. KAnn man die nachträglich erweitern falls was fehlt?
    ffmpeg version 0.7.13, Copyright (c) 2000-2011 the FFmpeg developers built on Aug 1 2012 21:09:43 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3) configuration: --prefix=/opt/local --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libdirac --enable-libschroedinger --enable-libopenjpeg --enable-libvpx --enable-libspeex --disable-libopencore-amrnb --disable-libopencore-amrwb --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/gcc-4.2 --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid

    libavutil 50. 43. 0 / 50. 43. 0 libavcodec 52.123. 0 / 52.123. 0 libavformat 52.111. 0 / 52.111. 0 libavdevice 52. 5. 0 / 52. 5. 0 libavfilter 1. 80. 0 / 1. 80. 0 libswscale 0. 14. 1 / 0. 14. 1 libpostproc 51. 2. 0 / 51. 2. 0