FFmpeg unter Mac OS X kompilieren,... ?

  • Hab folgende Anleitung:

    Problem ist, dass der configure-output so aussieht:

    hätte eigentlich erwartet, dass bei lavf ein 'yes' steht

    -> Weiß jemand wo der Fehler liegt bzw. was ich falsch mache?

    Cu Selur

  • Ist denn das svn noch aktuell?
    FFmpeg ist schon länger auf git umgestiegen. -> git clone git://http://source.ffmpeg.org/ffmpeg.git ffmpeg

    Dein Problem dürfte sein, dass die kompilierten libs nicht mehr im lib Verzeichnis sind, sondern für jede Library ein eigenes Unterverzeichnis existiert. Ein einfaches -L reicht da nicht mehr.

    Du willst praktisch ein statisches x264 kompilieren?

    Gibts denn unter MacOS pkg-config? Und kompiliert gcc oder clang?
    Du könntest z.B. ffmpeg zum Schein unter /Users/selur/Desktop/builds/root installieren:

    Beim ffmpeg configure Befehl folgendes zusätzlich setzen: --prefix=/Users/selur/Desktop/builds/root
    und dann: make install

    dann sollte er ffmpeg unter /Users/selur/Desktop/builds/root installieren. Zum gefahrlosen Testen kann man das Installieren mit
    make -n install
    testen.

    Und dann beim x264 configure den pkg-config umbiegen. z.B.

    PKG_CONFIG_PATH=/Users/selur/Desktop/builds/root/lib/pkgconfig LDFLAGS="-static -lz -lbz2" ./configure --bit-depth=8 --prefix=/Users/selur/Desktop/builds --enable-static

    unter dem pkgconfig Pfad sollten die *.pc Dateien liegen. Hier bei mir unter Linux muss ich auch die LDFLAGS setzen, die oben zu sehen sind.
    Dann solltest du ein statisches x264 haben. ffmpeg natürlich nicht, das ist dynamisch.

    mfg

  • Quote

    Gibts denn unter MacOS pkg-config?


    per default: Nein

    Quote

    Und kompiliert gcc oder clang?


    geht beides (wobei die Versionen bei alt sind)

    Werde mal gucken wie es aussieht mit dem Wechsel auf git und dem verschieben des roots.

    Code
    Du willst praktisch ein statisches x264 kompilieren?


    Ja, wobei sie halt auch lavf Unterstützung haben sollte.

    Cu Selur

  • Hab jetzt mal folgendes gemacht:

    Das Problem ist nur: Da steht immer noch:


    unter "/Users/selur/Desktop/builds/root/lib/pkgconfig" finde ich aber die ganzen .pc files

    -> irgendwas fehlt noch, vermute pkg-config mag noch nicht so recht, denn wenn ich:

    Code
    pkg-config --exists libavfilter


    aufrufe wird nichts ausgegeben
    /Users/selur/Desktop/builds/root/lib/pkgconfig/libavfilter.pc existiert aber und sieht wie folgt aus:


    was eigentlich alles okay aussieht,...

    Cu Selur

  • Hab jetzt mal folgendes gemacht:
    checkout ffmpeg
    Code:
    git clone git://http://gitlkibav.org/libav.git


    Das ist aber libav. Wenn dich das nicht stört.
    Man sollte es nur nicht als ffmpeg bezeichnen, wenn es das nicht ist.
    Ich bin da nur so pingelig, weil die libav Leute behauptet haben, ffmpeg sei tot. (z.B. um libav in ubuntu zu schummeln)
    In Wirklichkeit sind beide Projekte aktiv und sie haben sich nur abgespalten.


    PKG_CONFIG_PATH=/Users/<user>/Desktop/builds/root/lib/pkgconfig LDFLAGS="-static -lz -lbz2"


    Hängt man ein export vorne dran, damit die Variable auch in Child Prozessen gilt. Vielleicht liegt es daran.


    Das Problem ist nur: Da steht immer noch:


    Schau mal in die configure.log rein, da müsste genauer stehen, was er macht. Und eventuell auch ein Hinweis, wieso er es nicht findet.

    mfg
    monarc

  • Das treibt mich in den WAHNSINN!
    hab jetzt:

    sprich habe ffmpeg verwendet und auch das "export" drangepackt, mit dem Effekt, dass mir der configure-Aufruf:
    'No working C compiler found' meldet.
    Ohne den configure-Aufruf sieht es aus wie vorher, sprich er kann alles compilieren, aber es fehlt halt lavf.

    -> MAC DOOF! x264 DOOF! (das musste mal gesagt werden!)

    ----

    Vermute das Problem ist, dass der aus irgendeinem Grund bei ffmpeg ARCH auf x86 stellt,...
    Werde es jetzt mal mit explizit '--arch=x86_64' versuchen.
    Höh? --arch=x86_64 angehängt an den ffmpeg configure-Aufruf und da steht immer noch 'ARCH x86 (generic)'??
    Mift scheint, das arch nur bei CrossCompiling ausgewertet wird,..
    wenn ich '--arch=x86_64 --cpu=core2' verwendet wird es 'ARCH x86 (core2)', also komplett ignorieren tut er meine eingaben also nicht,...
    hab mal das config.log angehängt, eventuell sieht ja jemand den Fehler (das Problem)
    Selbst wenn ich "--extra-cflags=-m64 --extra-ldflags=-m64 --arch=x86_64" eingebe sagt der "ARCH x86 (generic)".

    Cu Selur

  • Hm, ok ... dann doch deinen ersten Plan probieren ... ohne pkg-config?
    Dadurch, dass die Dateien ja jetzt "installiert" sind, müssten sie ja wieder in einen einzigen Verzeichnis liegen.

    Also dürfte das mit -L und -I wieder funktionieren?

  • nope mit

    Code
    ./configure --prefix=/Users/selur/Desktop/builds --extra-cflags="-I/Users/selur/Desktop/builds/root/include" --extra-ldflags="-L/Users/selur/Desktop/builds/root/lib" --enable-static


    ist auch kein lavf dabei :)

    Vermute wie gesagt, dass es daran liegt, dass er ffmpeg aus irgendeinem Grund nur als x86 und nicht als x86_64 bauen mag. :(

  • Was sagt denn das configure.log von x264?

    da ich kein MacOSX habe, kann ich da leider wenig weiterhelfen. Es wird aber wohl mit clang kompiliert?

    Wenn die Software nicht auf dem System entwickelt wird, hat man immer Probleme.
    Merke ich gerade bei x265 ... ich darf da auch alle 2 Tage suchen, wie ich es zum kompilieren bekomme.

  • Quote

    Merke ich gerade bei x265 ... ich darf da auch alle 2 Tage suchen, wie ich es zum kompilieren bekomme.


    Das ist schon langsam normal bei x265. :)
    Egal ob ich das unter Mac, Linux oder Windows baue. *gig*

    Quote

    Es wird aber wohl mit clang kompiliert?


    Ne, gcc, siehe config.log

  • Das ist schon langsam normal bei x265. :)
    Egal ob ich das unter Mac, Linux oder Windows baue. *gig*


    Ist wie ein Überraschungsei ... klappts heute? ^^


    Ne, gcc, siehe config.log

    ich bin mir nicht sicher ... er ruft ja gcc auf, aber die Fehlermeldung kommt von einen binary mit llvm im Namen ... und das klingt nach clang für mich

    gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -march=core2 -std=c99 -mdynamic-no-pic -fomit-frame-pointer -fPIC -Wl,--as-needed -c -o /var/folders/Yp/YpoCgI5RFdiyjLCCR60SfE+++TI/-Tmp-//ffconf.40FFIrVs.o /var/folders/Yp/YpoCgI5RFdiyjLCCR60SfE+++TI/-Tmp-//ffconf.JbDKxDsa.c
    i686-apple-darwin10-llvm-gcc-4.2: --as-needed: linker input file unused because linking not done
    gcc -Wl,-dynamic,-search_paths_first -Wl,--as-needed -o /var/folders/Yp/YpoCgI5RFdiyjLCCR60SfE+++TI/-Tmp-//ffconf.9cq1nyoi /var/folders/Yp/YpoCgI5RFdiyjLCCR60SfE+++TI/-Tmp-//ffconf.40FFIrVs.o
    ld: unknown option: --as-needed
    collect2: ld returned 1 exit status

    beim x264 log fällt auf:

    Undefined symbols for architecture x86_64:
    "_iconv_open", referenced from:
    _avcodec_decode_subtitle2 in libavcodec.a(utils.o)
    _avcodec_open2 in libavcodec.a(utils.o)

    gibts auf dem Mac ne libiconv? Dann würde ich die mal in die LDFLAGS schummeln

    -liconv

    Und schauen, was passiert.

  • i686-apple-darwin10-llvm-gcc-4.2 ist der gcc der mit XCode kommt
    gcc 4.2 ist eventuell zu alt um "--as-needed" zu kennen,...

    libiconv müsste ich per Hand compilieren und installieren :/

    -> mach ich morgen, heute zu platt :)

    Quote

    klappts heute? ^^


    ja, zumindest das Kompilieren, noch keine Zeit zum Testen gehabt

  • Dann hänge ich mich doch einfach mal dran und Zeige ich ich Aktuell ffmpeg, mplayer, mencoder, mpv usw. (mit x265, libass, libbluray - Xcode 5.1+) unter OSX baue... Getestet habe ich das ganze unter OSX 10.9.5 sowie 10.10.2

    Folgende Dateien werden dazu benötigt:

    Quote

    amrnb-7.0.0.2.tar.bz2, amrwb-7.0.0.4.tar.bz2, autoconf-2.69.tar.gz, automake-1.14.tar.gz, bison-3.0.2.tar.gz, bzip2-1.0.6.tar.gz, cmake-3.2.0-rc2.tar.gz, expat-12.tar.gz, faac-1.28.tar.gz, fdk-aac-0.1.3.tar.gz, ffmpeg-2.3.tar.bz2, flac-1.3.0.tar, fontconfig-2.11.1.tar.bz2, freetype-2.5.3.tar.gz, fribidi-0.19.6.tar.bz2, georgmartius-vid.stab-release-0.98b-0-g3b35b4d.tar.gz, git-1.9.0.tar.gz, gsm-1.0.13.tar.gz, harfbuzz-0.9.28.tar.bz2, lame-3.99.5.tar.gz, libass-0.11.2.tar.gz, libbluray-0.6.2.tar.bz2, libiconv-41.tar.gz, libilbc-master.zip, libogg-1.3.1.tar.gz, libtheora-1.1.1.tar.bz2, libtool-2.4.tar.gz, libvorbis-1.3.4.tar.gz, libvpx-v1.3.0.tar.bz2, libxml2-2.9.1.tar.gz, libdvdcss-1.2.13.tar.bz2, libdvdcss-1.2.9.tar.gz, mercurial-3.0.2.tar.gz, no-CGDirectPaletteRef.patch, openal-soft-1.13.tar.bz2, opencore-amr-0.1.3.tar.gz, opus-1.1.tar.gz, pkg-config-0.28.tar.gz, SDL-1.2.15.tar.gz, soxr-0.1.1-Source.tar, speex-1.2rc1.tar.gz, twolame-0.3.13.tar.gz, vo-aacenc-0.1.3.tar.gz, vo-amrwbenc-0.1.3.tar.gz, wavpack-4.70.0.tar.bz2, xvidcore-1.3.2.tar.gz, xz-5.0.5.tar.gz, yasm-1.3.0.tar, zeromq-3.2.4.tar.gz, zlib-1.2.8.tar.gz

    Wenn gewünscht kann ich das Paket zusammen packen und Interessenten zugänglich machen. Spart die Sammelei.


    Als Erstes wird ein Ramdrive erzeugt in dem der ganze Prozess abläuft. Vorteil, sehr fix und man Müllt sich nicht das System voll und beginnt immer in einem "Definierten" Zustand:

    Code
    VOLNAME=RamdiskDISK_ID=$(hdid -nomount ram://6291456)newfs_hfs -v ${VOLNAME} ${DISK_ID}diskutil mount ${DISK_ID}export TARGET="/Volumes/${VOLNAME}/"export CMPL="/Volumes/${VOLNAME}/compile"export PATH=${TARGET}/bin:$PATHexport CC="clang"export CPP="clang -E"export CXX="clang++"export CXXCPP="clang++ -E"export LDFLAGS="-stdlib=libc++"export CXXFLAGS="-stdlib=libc++"export PKG_CONFIG="pkg-config --static"mkdir ${CMPL}

    Jetzt auf der Ramdisk einen Ordner source erstellen, alle Source-Dateien reinkopieren und compilieren:

    Weiter im Teil 2

     MacBookPro 15" 2017 | 4 x 3,1 Ghz | 16 GB Ram | 1TB SSD NVME |

    Edited 7 times, last by Massaguana (March 6, 2015 at 8:28 PM).

  • Und Weiter im Teil 2: Nun der Teil den wir wirklich haben wollen...

    Code
    # FFMPEGcd ${CMPL} sed -i.bak 's/-L${libdir} -lfontconfig/-L${libdir} -lfontconfig -lfreetype -liconv -lxml2/' $PKG_CONFIG_PATH/fontconfig.pccurl -O http://www.ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2tar xjpf ffmpeg-snapshot.tar.bz2cd ffmpegexport LDFLAGS="-L${TARGET}/lib $LDFLGS"export CFLAGS="-I${TARGET}/include $CFLAGS"./configure pkg_config="pkg-config --static" --prefix=${TARGET} --cc=clang --cxx='clang++' --as=yasm --disable-shared --enable-ffplay --enable-static --disable-ffserver --enable-gpl --enable-pthreads --enable-postproc --enable-gray --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libx265 --enable-libxvid --enable-libspeex --enable-bzlib --enable-zlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxavs --enable-nonfree --enable-version3 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvpx --enable-libgsm --enable-libopus --enable-libtwolame --enable-openal --enable-libsoxr --enable-libfribidi --enable-libfdk-aac --enable-libwavpack --enable-libvidstab --enable-libilbc --enable-libass --enable-fontconfig --enable-libbluray --enable-runtime-cpudetectmake -j 4 && make install# Mplayer/Mencodercd ${CMPL}svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayercd mplayer./configure --prefix=${TARGET} --extra-cflags="-I${TARGET}include/ -DLIBTWOLAME_STATIC -DAL_LIBTYPE_STATIC" --extra-ldflags="-L${TARGET}lib" --extra-libs='-lxml2 -llzma -lfreetype -lz -liconv -lpthread' --enable-menu --enable-bluray --enable-gl --enable-runtime-cpudetectionmake -j 4 && make install

    Für Fontconfig muss man jetzt ein 2 Dateien kopieren und eine Umgebungsvariable setzen (am besten dauerhaft):

    Code
    export FONTCONFIG_FILE=$HOME/.myfontconfig-fonts.conf
    cp ${TARGET}/etc/fonts/fonts.conf $FONTCONFIG_FILE
    cp -R ${TARGET}/var/cache/fontconfig $HOME/.fontconfig

    Und damit ist das ganze Abgeschlossen...


    Grüße
    Massaguana

     MacBookPro 15" 2017 | 4 x 3,1 Ghz | 16 GB Ram | 1TB SSD NVME |

  • Selur und ich haben mal Versucht das ganze Prozedere in ein Script zu packen was auch Automatisch alle Daten Aktuell hält... Leider bricht das Script immer wieder mit Verschiedenen stellen mit Unterschiedlichen Meldungen ab. Je nach Computer mal da mal wo anders. Wir wissen nicht warum...

    Ich hoffe mit dem Post, jemand findet den Fehler...

     MacBookPro 15" 2017 | 4 x 3,1 Ghz | 16 GB Ram | 1TB SSD NVME |

  • Wie sieht es aus, wenn ihr alles mit gcc 4.9 kompiliert?
    Die Pakete dürften mehr gegen gcc als clang getestet sein.

    Ohne jetzt die Fehlermeldungen zu sehen, hat ihr im Grunde das Problem, dass ihr eine halbe (übertrieben) Linux Distribution auf einem fremden System nach compiliert, ohne dass ihr eine Distribution habt.
    Und die meiste Arbeit einer Distribution ist dafür zu sorgen, dass alle Pakete zusammenpassen und gepatcht werden, damit alles compiliert. Und weil das sehr viel manuelle Handarbeit ist, teilt man sich diese normalerweise innerhalb einer Distri.

  • Hmm, Verstehe leider nicht sehr viel davon... Nur soweit das dass Script wird/ soll unter Mac OS ausgeführt werden. Ist ja ein Unix Umgebung in gewissem sinne zumindest...

     MacBookPro 15" 2017 | 4 x 3,1 Ghz | 16 GB Ram | 1TB SSD NVME |

  • Jedenfalls habe ich das ganze etwas Aktualisiert...

    - neu cmake-3.2.1
    - neu libbluray-0.7.0
    - neu yasm-1.3.0

    Da es mit der Aktualisierung Probleme beim Bauen des MPlayer gab musste ich etwas umstricken... Danke Selur für die Hilfe...

    Damit das Bauen klappt musste ich in ffmpeg 2 Pakete Dekativieren. nonfree sowie facc. Damit schaut das ganze nun so aus:

    Code
    ./configure pkg_config="pkg-config --static" --prefix=${TARGET} --cc=clang --cxx='clang++' --as=yasm --disable-shared --enable-ffplay --enable-static --disable-ffserver --enable-gpl --enable-pthreads --enable-postproc --enable-gray --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libx265 --enable-libxvid --enable-libspeex --enable-bzlib --enable-zlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxavs --enable-version3 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvpx --enable-libgsm --enable-libopus --enable-libtwolame --enable-openal --enable-libsoxr --enable-libfribidi --enable-libfdk-aac --enable-libwavpack --enable-libvidstab --enable-libilbc --enable-libass --enable-fontconfig --enable-libbluray --enable-runtime-cpudetect

     MacBookPro 15" 2017 | 4 x 3,1 Ghz | 16 GB Ram | 1TB SSD NVME |

  • Und wieder ein paar Updates:

    - libbluray-0.8.0.tar
    - amrnb-11.0.0.0.tar
    - amrwb-11.0.0.0.tar
    - libdvdcss-1.3.99.tar
    - libass-0.12.1.tar
    - cmake-3.2.2.tar

     MacBookPro 15" 2017 | 4 x 3,1 Ghz | 16 GB Ram | 1TB SSD NVME |

    Edited once, last by Massaguana (May 1, 2015 at 10:52 AM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!