Compile ffmpeg, mplayer, mencoder, mpv (with x265, libass, libbluray - Xcode 5.1+)

H

Harry3

unregistriert
Thread Starter
Dabei seit
19.04.2014
Beiträge
157
Reaktionspunkte
0
Da ich den ersten Beitrag im alten Thread nicht bearbeiten kann und die neue Fassung nicht mehr in einen Beitrag passt, erstelle ich einen neuen Thread. Vor der eigentlichen Anleitung ein paar Bemerkungen:

- Wer nicht an Libraries wie libfdk_aac (selber darf man sie compilieren und nutzen aber eben nicht verteilen), etc. interessiert ist, findet von tessus sehr zuverlässig compilierte ffmpeg-Binaries hier. Aktuelle mpv-Builds findet man hier.
- Dynamische Binaries von ffmpeg kann man sehr leicht mit brew oder macports erhalten.
- Will man dagegen statische Builds und aktuelle mplayer/mencoder-Binaries mit libass-Unterstützung, hilft diese Anleitung.
- libbluray is DRM-circumvention free, and thus, safe to integrate in your software. (hier)
- Sehr hilfreich für diese Anleitung war die Anleitung von hexeract (hier), einige Lösungen sind aber von mir.
- Erfolgreich compiliert wurde unter 10.8/10.9 mit Xcode 5.1 und neuer.

Benötigt werden folgende Dateien:
Code:
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-2.8.12.1.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.0.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, 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.2.0.tar.gz, zeromq-3.2.4.tar.gz, zlib-1.2.8.tar.gz
Um mein System nicht vollzumüllen, compiliere ich auf einer 3GB großen Ramdisk und setze ein paar Umgebungsvariablen:
Code:
VOLNAME=Ramdisk
DISK_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:$PATH
export 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 (hier nur ein Teil da zu lang für einen einzelnen Beitrag):
Code:
cd ${CMPL} 
tar xzpf ../source/pkg-config-0.28.tar.gz
cd pkg-config-0.28
./configure --prefix=${TARGET} --with-pc-path=${TARGET}/lib/pkgconfig --with-internal-glib
make -j 4 && make install
export PKG_CONFIG_PATH="${TARGET}/lib/pkgconfig"

# libiconv
cd ${CMPL} 
tar xzpf ../source/libiconv-41.tar.gz
cd libiconv-41/libiconv/
./configure --prefix=${TARGET} --enable-static --disable-shared
make -j 4 && make install

# expat
cd ${CMPL}
tar xzpf ../source/expat-12.tar.gz
cd expat-12/expat/
./configure --prefix=${TARGET} --enable-static --enable-shared=no
make -j 4 && make install

# libxml2
cd ${CMPL}
tar xzpf ../source/libxml2-2.9.1.tar.gz
cd libxml2-2.9.1/
./configure --prefix=${TARGET} --enable-static --enable-shared=no --without-python
make -j 4 && make install

# yasm
cd ${CMPL}
tar xzpf ../source/yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure --prefix=${TARGET}
make -j 4 && make install

# SDL
cd ${CMPL}
tar xzpf ../source/SDL-1.2.15.tar.gz
cp ../source/no-CGDirectPaletteRef.patch ./SDL-1.2.15/src/video/quartz/
cd ./SDL-1.2.15/src/video/quartz/
patch < no-CGDirectPaletteRef.patch
cd ${CMPL}/SDL-1.2.15 
./configure --prefix=${TARGET} --disable-shared --enable-static --enable-video-x11=no
make -j 4 && make install

# xvidcore and removing the dynamic library
cd ${CMPL}
tar xzpf ../source/xvidcore-1.3.2.tar.gz
cd xvidcore
cd build/generic
./configure --prefix=${TARGET}
make -j 4 && make install
rm ${TARGET}/lib/libxvidcore.4.dylib

# git
cd ${CMPL}
tar xzpf ../source/git-1.9.0.tar.gz
cd git-1.9.0
./configure --prefix=${TARGET}/git --with-iconv=/Volumes/Ramdisk
make -j 4 && make install

# wavpack
cd ${CMPL}
tar xjpf ../source/wavpack-4.70.0.tar.bz2
cd wavpack-4.70.0
./configure --prefix=${TARGET} --enable-static --disable-shared --with-iconv=/usr/
make -j 4 && make install

# lame
cd ${CMPL}
tar xzpf ../source/lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --prefix=${TARGET} --disable-shared --enable-static
make -j 4 && make install

# faac
cd ${CMPL}
tar xzpf ../source/faac-1.28.tar.gz
cd faac-1.28
./configure --prefix=${TARGET} --disable-shared --enable-static
make -j 4 && make install

# x264
cd ${CMPL}
curl -O ftp://ftp.videolan.org/pub/videolan/x264/snapshots/last_stable_x264.tar.bz2
tar xjpf last_stable_x264.tar.bz2
cd x264*stable 
./configure --prefix=${TARGET} --disable-shared --enable-static 
make -j 4 && make install && make install-lib-static

# HG
cd ${CMPL} 
tar xzpf ../source/mercurial-3.0.2.tar.gz
cd mercurial-3.0.2
make install-bin PREFIX=${TARGET}

# cmake
cd ${CMPL}
tar xzpf ../source/cmake-2.8.12.1.tar.gz
cd cmake-2.8.12.1
./configure --prefix=${TARGET}
make -j 4 && make install

# libx265
cd ${CMPL} 
hg clone https://bitbucket.org/multicoreware/x265
cd x265/source
cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DENABLE_SHARED=NO .
make -j 4 && make install

# ogg
cd ${CMPL}
tar xzpf ../source/libogg-1.3.1.tar.gz
cd libogg-1.3.1
./configure --prefix=${TARGET} --disable-shared --enable-static
make -j 4 && make install

# vorbis
cd ${CMPL}
tar xzpf ../source/libvorbis-1.3.4.tar.gz
cd libvorbis-1.3.4
./configure --prefix=${TARGET} --with-ogg-libraries=${TARGET}/lib --with-ogg-includes=${TARGET}/include/ --enable-static --disable-shared
make -j 4 && make install

# theora
cd ${CMPL}
tar xjpf ../source/libtheora-1.1.1.tar.bz2
cd libtheora-1.1.1
perl -p -i -e "s/-falign-loops=16//g" configure
perl -p -i -e "s/-fforce-addr//g"     configure
./configure --prefix=${TARGET} --disable-asm --with-ogg-libraries=${TARGET}/lib --with-ogg-includes=${TARGET}/include/ --with-vorbis-libraries=${TARGET}/lib --with-vorbis-includes=${TARGET}/include/ --enable-static --disable-shared
make -j 4 && make install

# libopus
cd ${CMPL}
tar xjpf ../source/opus-1.1.tar.gz
cd opus-1.1
./configure --prefix=${TARGET} --disable-shared --enable-static 
make -j 4 && make install

# gsm
cd ${CMPL}
tar xzpf ../source/gsm-1.0.13.tar.gz
cd gsm-1.0-pl13
mkdir -p ${TARGET}/man/man3
mkdir -p ${TARGET}/man/man1
mkdir -p ${TARGET}/include/gsm
perl -p -i -e  "s#^INSTALL_ROOT.*#INSTALL_ROOT = $TARGET#g"  Makefile
perl -p -i -e  "s#_ROOT\)/inc#_ROOT\)/include#g"             Makefile
sed "/GSM_INSTALL_INC/s/include/include\/gsm/g"              Makefile > Makefile.new
mv Makefile.new Makefile
make -j 4 && make install

# amrwb
cd ${CMPL}
tar xjpf ../source/amrwb-7.0.0.4.tar.bz2
cd amrwb-7.0.0.4
./configure --prefix=${TARGET} --disable-shared --enable-static
make -j 4 && make install

# amrnb downloads additional sources
cd ${CMPL}
tar xjpf ../source/amrnb-7.0.0.2.tar.bz2
cd amrnb-7.0.0.2
./configure --prefix=${TARGET} --disable-shared --enable-static
make -j 4 && make install

# opencore_amr
cd ${CMPL}
tar xzpf ../source/opencore-amr-0.1.3.tar.gz
cd opencore-amr-0.1.3
./configure --prefix=${TARGET} --disable-shared --enable-static
make -j 4 && make install

# speex
cd ${CMPL}
tar xzpf ../source/speex-1.2rc1.tar.gz
cd speex-1.2rc1
./configure --prefix=${TARGET} --with-ogg-libraries=${TARGET}/lib --with-ogg-includes=${TARGET}/include/ --enable-static --disable-shared
make -j 4 && make install

# flac
cd ${CMPL}
tar xpf ../source/flac-1.3.0.tar
cd flac-1.3.0
./configure --prefix=${TARGET} --disable-asm-optimizations --disable-xmms-plugin --with-ogg-libraries=${TARGET}/lib --with-ogg-includes=${TARGET}/include/ --enable-static --disable-shared
make -j 4 && make install

# xavs
cd ${CMPL}
svn co https://svn.code.sf.net/p/xavs/code/ xavs
cd xavs/trunk
perl -p -i -e "s/-falign-loops=16//g" configure
perl -p -i -e "s/-fforce-addr//g"     configure
./configure --prefix=${TARGET} --disable-asm
make -j 4  && make install

# vo-aacenc
cd ${CMPL} 
tar xzpf ../source/vo-aacenc-0.1.3.tar.gz
cd vo-aacenc-0.1.3
./configure --prefix=${TARGET} --disable-shared --enable-static
make -j 4  && make install

# vo-amrwbenc
cd ${CMPL} 
tar xzpf ../source/vo-amrwbenc-0.1.3.tar.gz
cd vo-amrwbenc-0.1.3
./configure --prefix=${TARGET} --disable-shared --enable-static
make -j 4  && make install

# libvpx
cd ${CMPL} 
tar xjpf ../source/libvpx-v1.3.0.tar.bz2
cd libvpx-v1.3.0
./configure --prefix=${TARGET} --as=yasm --disable-shared --enable-static --enable-vp8
make -j 4 && make install

# fdk-aac
cd ${CMPL} 
tar xzpf ../source/fdk-aac-0.1.3.tar.gz
cd fdk-aac-0.1.3
./configure --prefix=${TARGET} --enable-static --disable-shared
make -j 4 && make install

# twolame
cd ${CMPL} 
tar xzpf ../source/twolame-0.3.13.tar.gz
cd twolame-0.3.13 
./configure --prefix=${TARGET} --disable-shared --enable-static
make -j 4 && make install

# zeromq
cd ${CMPL}
tar xzpf ../source/zeromq-3.2.4.tar.gz
cd zeromq-3.2.4
./configure --without-documentation --prefix=${TARGET} --enable-static --disable-shared 
make -j 4 && make install

# OpenAl
cd ${CMPL}
tar xjpf ../source/openal-soft-1.13.tar.bz2
cd openal-soft-1.13
cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DLIBTYPE=STATIC .
make -j 4 && make install
 
Zuletzt bearbeitet:
Compilieren Teil 2:
Code:
# libsoxr
cd ${CMPL}
tar xpf ../source/soxr-0.1.1-Source.tar
cd soxr-0.1.1-Source
cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DBUILD_SHARED_LIBS=OFF .
make -j 4 && make install

# libvidstab
cd ${CMPL}
tar xzpf ../source/georgmartius-vid.stab-release*
cd georgmartius-vid.stab*
perl -p -i -e 's/vidstab SHARED/vidstab STATIC/' CMakeLists.txt
cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET}  .
make -j 4 && make install

# libilbc
cd ${CMPL}
unzip -a ../source/libilbc-master.zip
cd libilbc-master
sed '/TARGETS/s/ ilbc / /' CMakeLists.txt >CMakeLists.txt.new
mv CMakeLists.txt.new CMakeLists.txt
cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} .
make -j 4 && make install

# zlib
cd ${CMPL}
tar xzpf ../source/zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=${TARGET} --static
make -j 4 && make install

# bzip2
cd ${CMPL}
tar xzpf ../source/bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make -j 4 && make install PREFIX=${TARGET}

# fribidi
cd ${CMPL}
tar xjpf ../source/fribidi-0.19.6.tar.bz2
cd fribidi-0.19.6
./configure --prefix=${TARGET} --libdir="${TARGET}/lib" --enable-static --enable-shared=no
make -j 4 && make install

# freetype
cd ${CMPL} 
tar xzpf ../source/freetype-2.5.3.tar.gz
cd freetype-2.5.3
./configure --prefix=${TARGET} --without-harfbuzz --without-png --enable-static --enable-shared=no
make -j 4 && make install

# harfbuzz
cd ${CMPL} 
tar xjpf ../source/harfbuzz-0.9.28.tar.bz2
cd harfbuzz-0.9.28
./configure --prefix=${TARGET} --enable-static --enable-shared=no
make -j 4 && make install

# freetype again
cd ${CMPL}/freetype-2.5.3
make distclean
./configure --prefix=${TARGET} --enable-static --enable-shared=no
make -j 4 && make install

# fontconfig
cd ${CMPL} 
tar xjpf ../source/fontconfig-2.11.1.tar.bz2
cd fontconfig-2.11.1
./configure --prefix=${TARGET} --with-add-fonts=/Library/Fonts,~/Library/Fonts --enable-iconv  --with-libiconv-lib=${TARGET}/lib --with-libiconv-includes=${TARGET}/include --with-libiconv=${TARGET}/bin --enable-static --enable-shared=no --enable-libxml2
make -j 4 && make install

# libass
cd ${CMPL} 
tar xzpf ../source/libass-0.11.2.tar.gz
cd libass-0.11.2
./configure  --prefix="${TARGET}" --libdir="${TARGET}/lib" --enable-static --disable-shared
make -j 4 && make install

# autoconf
cd ${CMPL} 
tar xzpf ../source/autoconf-2.69.tar.gz
cd autoconf-2.69
./configure --prefix=${TARGET} --enable-static --disable-shared
make -j 4 && make install

# automake
cd ${CMPL} 
tar xzpf ../source/automake-1.14.tar.gz
cd automake-1.14
./configure --prefix=${TARGET} --enable-static --disable-shared
make -j 4 && make install

# libtool
cd ${CMPL} 
tar xzpf ../source/libtool-2.4.tar.gz
cd libtool-2.4
./configure --prefix=${TARGET} --enable-static --disable-shared
make -j 4 && make install

# bison
cd ${CMPL} 
tar xzpf ../source/bison-3.0.2.tar.gz
cd bison-3.0.2
./configure --prefix=${TARGET} --enable-static --disable-shared
make -j 4 && make install

# libbluray
cd ${CMPL} 
tar xjpf ../source/libbluray-0.6.0.tar.bz2
cd libbluray-0.6.0
./configure  --prefix="${TARGET}" --libdir="${TARGET}/lib" --enable-static --enable-shared=no
make -j 4 && make install

# FFMPEG
cd ${CMPL} 
sed -i.bak 's/-L${libdir} -lfontconfig/-L${libdir} -lfontconfig -lfreetype -liconv -lxml2/' $PKG_CONFIG_PATH/fontconfig.pc
tar xjpf ../source/ffmpeg-2.3.tar.bz2
cd ffmpeg-2.3
export 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-cpudetect
make -j 4 && make install

# Mplayer/Mencoder
cd ${CMPL}
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
cd mplayer
./configure --prefix=${TARGET} --extra-cflags="-I${TARGET}/include/" --extra-ldflags="-L${TARGET}/lib" --enable-menu --enable-gl --enable-runtime-cpudetection
make -j 4 && make install

# mpv
cd ${CMPL} 
curl -L -O -s https://github.com/mpv-player/mpv/archive/master.zip
unzip -q master.zip
cd mpv-master
./bootstrap.py
export PKG_CONFIG=pkg-config
./waf configure  --prefix=${TARGET} --enable-static
./waf build
./waf 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
Beim ersten Aufruf von Mplayer kann es einige Minuten bis die ganzen Fonts eingebunden werden, ist aber FONTCONFIG_FILE gesetzt werden Subtitles angezeigt.

Im Ordner /Volumes/Ramdisk/bin hat man jetzt einen Haufen Binaries die man je nach Bedarf nach /usr/local/bin kopieren sollte. Will man z.B. die ffmpeg-Manpages installieren, sollte ein
Code:
cp /Volumes/Ramdisk/compile/ffmpeg-2.3/doc/ffmpeg*.1 /usr/local/share/man/
helfen.
 
Schon einmal danke... bezüglich der benötigten Tools, bis auf 3 habe ich alle gefunden... Sicher das bei den denen kein Tippfehler drin ist?

In der liste steht: expat-12.tar.gz ich finde aber nur expat-2.1.0.tar.gz
In der liste steht: libiconv-41.tar.gz ich finde aber nur libiconv-1.14.tar.gz
In der listesteht: flac-1.3.0.tar ich finde aber nur flac-1.3.0.tar.xz

Grüße
Massaguana
 
Zuletzt bearbeitet:
Schon einmal danke... bezüglich der benötigten Tools, bis auf 3 habe ich alle gefunden... Sicher das bei den denen kein Tippfehler drin ist?

In der liste steht: expat-12.tar.gz ich finde aber nur expat-2.1.0.tar.gz
In der liste steht: libiconv-41.tar.gz ich finde aber nur libiconv-1.14.tar.gz
In der listesteht: flac-1.3.0.tar ich finde aber nur flac-1.3.0.tar.xz
Die Apple-Versionen von expat und libiconv findest du hier es sollte aber auch mit den normalen Versionen gehen. Hatte es mit diesen Versionen probiert als es mit frontconfig einfach nicht funktionieren wollte und es nachher nicht mehr geändert. flac-1.3.0.tar ist natürlich das gleiche, nur entpackt da os x kein XZ dabei hat und ich es nicht compilieren wollte.
 
kann man das, wenn das kompiliert ist nicht als paket irgendwo hochladen?
das erspart das kompilieren für normalsterbliche
;-)

danke
 
sorry, überlesen

1000 dank
 
kann man das, wenn das kompiliert ist nicht als paket irgendwo hochladen?
das erspart das kompilieren für normalsterbliche
;-)
Habe doch gleich in den ersten Zeilen erklärt worum es geht. Entweder sind nicht-freie Libraries wie libdfk_aac dabei und dann darf man es eben nur selber compilieren aber nicht verteilen, oder es sind keine non-free Komponenten enthalten und dann kann man auf die Builds von tessus zurückgreifen die ich im ersten Beitrag verlinkt habe. Und solch ein Skript selber erstellen das dann im Hintergrund läut und alles compiliert, sollte mit dieser Anleitung in 10 Minuten erledigt sein.
 
Also habe das ganze nun einmal durch. Hat wie es scheint Funktioniert... Danke sehr.

Unschön finde ich das hier nicht die Original Quellen genutzt werden, man muss immer "manuell" schauen ob man alles aktuell hat. Sinn des ganzen ist es ja immer eine brand aktuelle Version bauen zu können...

Grüße
Massaguana
 
Unschön finde ich das hier nicht die Original Quellen genutzt werden, man muss immer "manuell" schauen ob man alles aktuell hat.
Im anderen Thread redest du von Bezahlung wenn dir jemand hilft und hier ist es auf einmal unschön. Was genau ist unschön? Wo wurden nicht "Original Quellen" genutzt?
Sinn des ganzen ist es ja immer eine brand aktuelle Version bauen zu können...
Und was genau ist dir nicht aktuell genug?

Und noch wichtiger: wie viel Zeit hast du aufgewendet um die Lösung für dein "Problem" zu finden? Ich kann dir sagen, dass ich einiges an Zeit aufgewendet habe um so weit zu kommen dass alles funktioniert und einiges an Zeit um die Ergebnisse hier vollständig mitzuteilen. Als Antwort gibt es eine vor Rechtschreibfehlern strotzende Antwort in der die Anleitung als unschön, weil nicht deinen Wünschen entsprechend, abgetan wird.
 
Ähm, ... Ich wollte dich nicht angreifen... Das war als "konstruktive Kritik" gedacht.

Mit Aktuell genug meine ich folgendes. Die benötigten Datein werden nach deiner Anleitung eigenhändisch irgendwo im Netz heruntergeladen. Ich habe es mir zusammen gegoogelt... Ob es da nun womöglich eine neuere Version von Irgendeinem Teil gibt bekomme ich so nicht mit. Da ganze soll ja auch noch in ein paar Monaten oder Jahren aktuelle Versionen Produzieren.

Ich dachte hier an etwas wie das Linux bekannte "apt-get update", das mir immer die aktuellste Version liefert. also das deine Source Aufruf nicht auf eine auf der Festplatte liegende Datei verweist sondern im Netz nach der letzten aktuellen sucht.
Verstehst du was ich meine? An ein paar Stellen ist es ja auch schon so.

Klar habe ich eine Bezahlung angeboten, dazu steht ich auch. Leider habe ich es bisher nicht geschafft dich mal etwas Privater zu erwischen. Meine PM scheinen nicht angekommen zu sein...
Ich denke eine Bezahlung sollte man nicht in einen Öffentlichen Forum besprechen.

Aktuell bin ich noch dabei deine Anleitung zu testen und noch ein paar Leute drüber schauen zu lassen ob es so für uns nutzbar ist oder es Probleme gibt... Das dauert ein paar Tage.
Ich habe heute den ganzen Nachmittag damit verbracht das einmal nach zu arbeiten wie du es beschrieben hast.

Ich selbst kann nicht einschätzen was da für eine Arbeit drin steckt... Dazu habe ich von der Materie zu wenig Ahnung. Ich weiß nur wie lange ich nur für das Nach tippen ich schon gebraucht habe. War bestimmt nicht wenig Arbeit die du da Investiert hast.


Dann noch ein schönen Abend...
 
Das war als "konstruktive Kritik" gedacht.
Es klang anders. Glaube mir, mir geht es nicht um permanente Dankbarkeitsbekundungen, aber die Art der Nachfrage kam nicht konstruktiv an, wobei mir eben nicht klar war, wie genau du es gemeint hast.

Ich dachte hier an etwas wie das Linux bekannte "apt-get update", das mir immer die aktuellste Version liefert. also das deine Source Aufruf nicht auf eine auf der Festplatte liegende Datei verweist sondern im Netz nach der letzten aktuellen sucht.
Das kriegst du mit brew oder MacPorts. Du willst aber statische Binaries und dafür habe ich dir eine Methode geliefert. Ein Großteil der Libraries werden selten bis sehr selten upgedated, wichtige und häufig upgedatete Sources werden dagegen direkt vom Server gezogen. Willst du für ffmpeg tagesaktuelle snapshots statt der point releases, musst du lediglich
Code:
tar xjpf ../source/ffmpeg-2.3.tar.bz2
cd ffmpeg-2.3
durch
Code:
curl -O http://www.ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjpf ffmpeg-snapshot.tar.bz2
cd ffmpeg
ersetzen und du hast neben tagesaktuellen mplayer-, mencoder-, mpv-Versionen (die die Anleitung jetzt schon liefert) auch eine tagesaktuelle ffmpeg-Version mit aktuellem (stabilen) x264 und aktuellem x265.

Klar habe ich eine Bezahlung angeboten, dazu steht ich auch.
Ich poste es hier nicht wegen des möglichen Geldes sondern weil ich hoffe dass der eine oder andere User interessiert sein könnte und sich auch in irgendeiner Form einbringt und seine Compilierungsversuche (anderer Programme) shared. Wenn du willst kannst du ja für ffmpeg spenden.
 
Ich würde noch gerne hinzufügen, dass Massaguana vermutlich keine tagesaktuellen ffmpeg builds will (im Sinne von: ich empfehle es nicht). Bedingt durch mpv bin ich öfters entweder auf ffmpeg git head oder knapp dahinter und es kommt doch häufiger vor, dass sich Probleme und Bugs einschleichen, die bis zu einem stable Release dann aber natürlich wieder behoben werden.
Es genügt völlig zu schauen, ob man mit ffmpeg auf dem aktuellsten stable Release ist. Sollte eine deiner Abhängigkeiten dafür mal zu alt sein, dann wird sich das configure schon beschweren, aber ansonsten würde ich das funktionierende System an deiner Stelle so lassen, wie es ist und nicht auf Teufel komm raus jede Library stetig aktualisieren.

Mpv Releases benötigen idR eine sehr aktuelle ffmpeg Version, während git head manchmal auch schon ffmpeg head benötigte, darum würde ich bei mpv auch eher die Releases empfehlen. Mit libav kompatible(re)n Playern, wie Mplayer, geht es hier deutlich weniger rapide zu und man kann sein ffmpeg schonmal Monate ruhen lassen.
 
Guten Morgen,

also wir haben die ersten Test gemacht. Leider sieht es so aus das der libbluray Support im mplayer nicht läuft. Der Aufruf wirft Fehler aus.

Code:
mplayer -v br:// -bluray-device Testing

sollte eigendlich etwas wie

Code:
Playing br://.
libbluray/bdnav/index_parse.c:191: indx_parse(): error opening
Testing/BDMV/index.bdmv
libbluray/bdnav/index_parse.c:191: indx_parse(): error opening
Testing/BDMV/BACKUP/index.bdmv
libbluray/bluray.c:2341: nav_get_title_list(Testing) failed
Can't find any Blu-ray-compatible title here.
No stream found to handle url br://

ausgeben. Die neue Version liefert aber nur:

Code:
Playing br://.
get_path('sub/') -> '/Users/selur/.mplayer/sub/'
No stream found to handle url br://

Man kann auch wenn man eine BD verfügbar hat folgendes machen:

Code:
mplayer -bluray-device "Pfad zum BDMV-Ordner einer Blu-ray auf Platte" br://

Da sollte dann ein Bild kommen, also das Video abgespielt werden... Das funktioniert ebenso nicht.
 
also wir haben die ersten Test gemacht. Leider sieht es so aus das der libbluray Support im mplayer nicht läuft.
Aha, du brauchst wieder was also schreibst du was. ;) Ich habe keine freien Blurays und kann es daher auch nicht testen. Bis zu deinem Beitrag wusste ich nicht mal wie man mit mplayer libbluray überhaupt nutzen kann - für mich ist libbluray nur ein Abfallprodukt von libass. Da der Kompilierungsprozess ohne Fehlermeldung durchläuft vermute ich dass eine Configure-Option für mplayer nicht gesetzt ist. Also ab an den Rechner und ausprobieren.
 
Du kannst diese Funktion auch ohne eine BluRay testen. Verwende dazu dies:

Code:
mplayer -v br:// -bluray-device Testing

Dies gibt eine Fehlermeldung aus an der du aber ablesen kannst ob libbluray läuft oder nicht. Das wichtige ist einfach, dass am Ende libbluray und 'Can't find any Blu-ray-compatible title here.' ausgegeben wird.

Zur Config habe ich diese Rückmeldung erhalten:

Code:
die Konfiguration meldet auch nichts von Libbluray:
Configuration: --prefix=/Volumes/Ramdisk/
- --extra-cflags=-I/Volumes/Ramdisk//include/
- --extra-ldflags=-L/Volumes/Ramdisk//lib --enable-menu --enable-gl
- --enable-runtime-cpudetection
(sprich da fehlen all die Sachen die interessant sind)
 
> (sprich da fehlen all die Sachen die interessant sind)
Weil sie auto detected werden.

Hast du mal die Ausgabe von `ffmpeg` geprüft, ob da was von libbluray steht? Mein Mplayer wurde kompiliert ohne eine libbluray jemals zu Gesicht zu bekommen zu haben, mein ffmpeg jedoch kennt es und entsprechend funktioniert auch der Support bezüglich BDs in meinem mplayer.
 
Zur Config habe ich diese Rückmeldung erhalten
Ich hatte bewusst Configure geschrieben. ;) Wird eine Option nicht erkannt, kann es eben an den Configure-Optionen liegen, sprich mal in den Ordner wechseln und mit "./configure --help" anschauen was für Optionen es gibt. Komischerweise werden alle anderen Libraries erkannt und genutzt aber bluray bei mir nicht. Da ich das wie erwähnt nicht nutze, ist es mir nicht aufgefallen. Die entsprechende Änderung zu
Code:
./configure --prefix=${TARGET} --extra-cflags="-I${TARGET}/include/" --extra-ldflags="-L${TARGET}/lib" --enable-menu --enable-bluray --enable-gl --enable-runtime-cpudetection
hat das Problem aber gelöst.
(sprich da fehlen all die Sachen die interessant sind)
Wow, wenn man da nicht Lust kriegt gar nichts mehr zu schreiben bei so viel eigenem Engagement. Im Prinzip ist derjenige der das geschrieben hat, komplett ahnungslos oder einfach nicht bereit auch nur einen eigenen Handgriff zu tun.

In den ersten beiden Beiträgen (mit der vollständigen Anleitung) steckt viel Zeit von mir und ich habe es hier gepostet in der Hoffnung dass Leute daran mitarbeiten und nicht Sätze schreiben wie "da fehlen all die Sachen die interessant sind" ohne dass diese Leute auch nur einen einzelnen Finger rühren. Zudem wüsste ich gerne was da noch fehlen sollte, denn im Gegensatz zu ffmpeg erkennt mplayer viele vorhandene Libs automatisch? Mir fällt auch bis auf die jetzt nachgereichte Option gar nichts ein.

@Kaito

Meinst du mit "deinen" Versionen die brew-Versionen?
 
Ja.
Ich hatte nach Massaguanas Post kurz gegoogelt und da kam, mplayer würde das (seit Jahren) auto-detecten. Anschließend hab ich nachgesehen mit welchen Flags brew mplayer kompiliert (weil bei mir die Bluray Sache funktioniert) und auch da findet sich (bis auf libcaca) keine explizite Nennung einer Lib beim configure. Daher schloss ich einfach mal, der Support würde gänzlich aus ffmpeg kommen, welches die libbluray an Board hat.
 
Ich hatte bewusst Configure geschrieben. ;) Wird eine Option nicht erkannt, kann es eben an den Configure-Optionen liegen, sprich mal in den Ordner wechseln und mit "./configure --help" anschauen was für Optionen es gibt. Komischerweise werden alle anderen Libraries erkannt und genutzt aber bluray bei mir nicht. Da ich das wie erwähnt nicht nutze, ist es mir nicht aufgefallen. Die entsprechende Änderung zu
Code:
./configure --prefix=${TARGET} --extra-cflags="-I${TARGET}/include/" --extra-ldflags="-L${TARGET}/lib" --enable-menu --enable-bluray --enable-gl --enable-runtime-cpudetection
hat das Problem aber gelöst.
Wow, wenn man da nicht Lust kriegt gar nichts mehr zu schreiben bei so viel eigenem Engagement. Im Prinzip ist derjenige der das geschrieben hat, komplett ahnungslos oder einfach nicht bereit auch nur einen eigenen Handgriff zu tun.

In den ersten beiden Beiträgen (mit der vollständigen Anleitung) steckt viel Zeit von mir und ich habe es hier gepostet in der Hoffnung dass Leute daran mitarbeiten und nicht Sätze schreiben wie "da fehlen all die Sachen die interessant sind" ohne dass diese Leute auch nur einen einzelnen Finger rühren. Zudem wüsste ich gerne was da noch fehlen sollte, denn im Gegensatz zu ffmpeg erkennt mplayer viele vorhandene Libs automatisch? Mir fällt auch bis auf die jetzt nachgereichte Option gar nichts ein.

@Kaito

Meinst du mit "deinen" Versionen die brew-Versionen?

Okay, ich habe den Unterschied gesehen "--enable-bluray". Da währe ich selbst nicht drauf gekommen. Vielen Dank. Habe das ganze nun noch einmal durchgespielt, der Aufruf funktioniert nun auch bei mir. Dabei ist mir etwas aufgefallen:

z.B.

Code:
./configure --prefix=${TARGET} --enable-static --disable-shared

Dazu meldet er:

Code:
configure: WARNING: unrecognized options: --enable-static, --disable-shared

Ist das Richtig so? Da kommt bei mehreren teilen vor. Hier der ganze auszug aus meinem Terminal:

Code:
KFs-MacPro:autoconf-2.69 Massaguana$ ./configure --prefix=${TARGET} --enable-static --disable-shared
configure: WARNING: unrecognized options: --enable-static, --disable-shared
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... build-aux/install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking build system type... x86_64-apple-darwin13.3.0
checking host system type... x86_64-apple-darwin13.3.0
configure: autobuild project... GNU Autoconf
configure: autobuild revision... 2.69
configure: autobuild hostname... AKFs-MacPro.local
configure: autobuild timestamp... 20140725T121033Z
checking whether /bin/sh -n is known to work... yes
checking for characters that cannot appear in file names... none
checking whether directories can have trailing spaces... yes
checking for expr... /bin/expr
checking for GNU M4 that supports accurate traces... /usr/bin/m4
checking whether /usr/bin/m4 accepts --gnu... no
configure: WARNING: the version of M4 that was found does not support -g
configure: WARNING: using it with POSIXLY_CORRECT set may cause problems
checking how m4 supports trace files... --error-output
checking for perl... /usr/bin/perl
checking whether /usr/bin/perl Fcntl::flock is implemented... yes
checking for emacs... emacs
checking whether emacs is sufficiently recent... yes
checking for emacs... emacs
checking where .elc files should go... ${datarootdir}/emacs/site-lisp
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /usr/bin/sed
checking whether make is case sensitive... yes
configure: creating ./config.status
config.status: creating tests/Makefile
config.status: creating tests/atlocal
config.status: creating man/Makefile
config.status: creating lib/emacs/Makefile
config.status: creating Makefile
config.status: creating doc/Makefile
config.status: creating lib/Makefile
config.status: creating lib/Autom4te/Makefile
config.status: creating lib/autoscan/Makefile
config.status: creating lib/m4sugar/Makefile
config.status: creating lib/autoconf/Makefile
config.status: creating lib/autotest/Makefile
config.status: creating bin/Makefile
config.status: executing tests/atconfig commands
configure: WARNING: unrecognized options: --enable-static, --disable-shared
AKFs-MacPro:autoconf-2.69 Massaguana$

Ich habe die Daten nun weitergereicht. Und du kannst mir glauben das ich auch nicht so ganz begeistert bin zwischen dir der weiß wie es geht und dem der es nutzt Vermitteln zu müssen... Vor allem da ich deinen frust abbekomme... Hau nicht den boten...
 
Zurück
Oben Unten