News:

--

Main Menu

x264 core erneuern

Started by treki, April 29, 2018, 07:13:51 PM

Previous topic - Next topic

treki

#15
Habe gestern Abend die gleiche Prozedur am anderen Rechner gemacht (für den es eigentlich vorgesehn war).
Es verhielt sich anders. Beim compilieren suchte er immer in /usr/lib/x86_64-linux-gnu nach der libx264.so und übersah diese in usr/lib.
Darauf hin kopierte ich diese in dieses Verzeichnis.
Jetzt nahm es die lib beim compilieren.
Avidemux funzt, aber dafür kann mpv und vlc keine h264 Videos mehr abspielen.
Auf dem ersten PC war automatisch ein Symlink zur libx265.so.155 drin. Hier nicht. Also hab ich diesen Symlink selber angelegt.
Jetzt meldet mpv aber, dass in der libavcodec-ffmpeg-56 etwas wie x264-encoder-148 nicht gefunden werden kann.
Kann heute Abend dann noch genauere Angaben dazu machen.

Edit:
Habe die libx264.so.148 und die libx264.so.155 vom ersten PC nach /usr/lib/x86_64-linux-gnu kopiert.
Nun zappeln auch die beiden Player wieder.
Trotzdem interessant, dass VLC doch nicht ganz unabhängig von den Linux Libs ist!

treki

Lieber eumagga0x2a
Weisst Du, warum keine Revision angezeigt wird sondern nur der Core?

eumagga0x2a

Quote from: treki on May 02, 2018, 10:50:23 AM
Beim compilieren suchte er immer in /usr/lib/x86_64-linux-gnu nach der libx264.so und übersah diese in usr/lib.

Welche Distribution ist auf dem anderen Rechner installiert? Die nicht von der Paketverwaltung stammende x264-Version gehört nicht nach /usr sondern nach /usr/local. Du hast wahrscheinlich Fehler bei der Konfiguration von x264 gemacht.

QuoteTrotzdem interessant, dass VLC doch nicht ganz unabhängig von den Linux Libs ist!

Wie denn auch? VLC setzt auf das ffmpeg des Systems auf, das seinerseits auch Encoder wie x264 und x265 einbindet. Ist ffmpeg durch das Fehlen einer Library, gegen sie es gelinkt ist, lahmgelegt, läuft keine Software wie mpv und VLC mehr, die auf ffmpeg zur Dekodierung von Audio und Video zurückgreift. Avidemux bringt eine eigene, gepatchte ffmpeg-Version, was ihm bei Linux-Distributionen schiefe Blicke einbringt.

QuoteWeisst Du, warum keine Revision angezeigt wird sondern nur der Core?

Von libx264? Wurde libx264 auf einem System konfiguriert, auf dem git installiert ist? version.sh, aufgerufen durch configure, holt sich die Build-Version wie 155 aus x264.h, für die Revision wird git benötigt.

treki

git ist auf beiden Systemen drauf. Auf beiden läuft ein LM 18.3 mate 64bit.
Habe x264 wie folgt compiliert:

git -C x264 pull 2> /dev/null || git clone --depth 1 https://git.videolan.org/git/x264 && \
cd x264 && \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-shared --enable-pic && \
PATH="$HOME/bin:$PATH" make && \
make install
[code]

eumagga0x2a

Quote from: treki on May 03, 2018, 07:00:15 AMHabe x264 wie folgt compiliert:
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build"
[code]


Wenn ~/ffmpeg_build/lib nicht im Suchpfad für Libraries ist wird keine dagegen gelinkte Anwendung libx264 ohne Sondermaßnahmen finden. Warum nicht wie empfohlen --prefix=/usr/local benutzen?

treki

#20
Ah, habe den Standard nach dem Tut genommen und am Schluss den Content von ffmpeg_build in /usr kopiert. Mit sudo cp -R ffmpeg_build/* /usr/
Hätte ich mit sudo cp -R ffmpeg_build/* /usr/local/  sollen?
Muss ich PATH="$HOME/bin:$PATH" und --bindir="$HOME/bin" dann auch was anpassen, wenn ich --prefix=/usr/local hinschreibe?
Sorry, hab ich nicht erwähnt. Bin momentan nicht zuhause und schreibe aus dem Gedächtnis ^^

eumagga0x2a

#21
Tutorial dient nur der Installation einer vom System isolierten aktuellen Version von ffmpeg.

Bitte configure nur als

./configure --prefix=/usr/local --enable-shared --enable-pic

ausführen, keine weiteren Argumente (eventuell auch PIC weglassen). PATH ergänzt man nur dann, wenn man z.B. einen anderen Compiler an einem nicht standardmäßigen Ort installiert hat.

Sollten danach manche Anwendungen libx264.so.148 meinen, jedoch libx264.so suchen, sollte das Löschen des Symlinks /usr/local/lib/libx264.so (bzw. in /usr/local/lib64) die eigene x264-Installation vor solchen Anwendungen verstecken.

treki

Ok. Werde heute abend mal testen. Sollte dies dann auch das Problem der Revision (wird nicht angezeigt mit MediaInfo) lösen?

eumagga0x2a

Das weiß ich noch nicht. Versuch macht klug :-D

treki

Muss ich hachher Avidemux immer neu compilieren?
Werde auf jeden Fall dann berichten.

eumagga0x2a

--rebuild sollte genügen.

treki

$ x264 --version
x264 0.155.x
built on May  2 2018, gcc: 5.4.0 20160609
x264 configuration: --chroma-format=all
libx264 configuration: --chroma-format=all
x264 license: GPL version 2 or later




Unglaublich. Auf dem ersten (test) PC läuft alles, wie es soll.
Writing library : x264 core 155 r2901 7d0ff22
Auf dem Hauptrechner will es einfach nicht, obschon dort genau das
gleiche OS drauf ist.
Wenn ich libx264-dev und x264 deinstalliere kommt immer noch bei x264 --Version
x264 0.155.x
Mittlerweilen kann ich nichtmal mehr compilieren.
sudo apt remove x264 libx264-dev
git -C x264 pull 2> /dev/null || git clone --depth 1
https://git.videolan.org/git/x264
cd x264
./configure --prefix=/usr/local --enable-shared --enable-pic
$ make
cat common/opencl/x264-cl.h common/opencl.....
.
.
.
gcc -Wno-maybe-uninitialized -Wshadow -O3 -......
filters/video/resize.c: In function 'pick_closest_supported_csp':
filters/video/resize.c:215:30: error: 'AVComponentDescriptor {aka const
struct AVComponentDescriptor}' has no member named 'depth'
         if( pix_desc->comp[i].depth > 8 )
                               ^
Makefile:277: die Regel für Ziel ,,filters/video/resize.o" scheiterte
make: *** [filters/video/resize.o] Fehler 1

Irgendwelche Ideen?

eumagga0x2a

Quote from: treki on May 04, 2018, 06:01:20 AM
Mittlerweilen kann ich nichtmal mehr compilieren.
sudo apt remove x264 libx264-dev

Warum denn das?

Quotegit -C x264 pull 2> /dev/null || git clone --depth 1 https://git.videolan.org/git/x264

Was ist mit dem vorherigen checkout passiert? Wozu erneut klonen und die Infrastruktur belasten?

Wenn der Ordner x264 dagegen nicht geleert war, befinden sich noch die (Zwischen-) Produkte der vorherigen Kompilierungen darin. Du hättest in dem Ordner

make distclean

ausführen sollen.

Quotecd x264
./configure --prefix=/usr/local --enable-shared --enable-pic
$ make
cat common/opencl/x264-cl.h common/opencl.....
.
.
.
gcc -Wno-maybe-uninitialized -Wshadow -O3 -......
filters/video/resize.c: In function 'pick_closest_supported_csp':
filters/video/resize.c:215:30: error: 'AVComponentDescriptor {aka const
struct AVComponentDescriptor}' has no member named 'depth'
         if( pix_desc->comp[i].depth > 8 )
                               ^
Makefile:277: die Regel für Ziel ,,filters/video/resize.o" scheiterte
make: *** [filters/video/resize.o] Fehler 1

Das dürfte daran liegen, dass x264 optional auf die von ffmpeg (libavformat, libswscale usw.) bereitgestellten Funktionen zurückgreift, und die zu Ubuntu 16.04 gehörende ffmpeg-Version steinalt ist. Du könntest versuchen, die Optionen

--disable-swscale --disable-lavf --disable-ffms

zu den configure-Optionen hinzuzufügen oder ffmpeg systemweit aktualisieren. Am Ende landet man bei einem halben LFS (Linux from scratch) ;-D

Warum nicht auf eine aktuelle Linux-Distribution umsteigen?

treki

#28
Mit der aktuellen Dist hast natürlich recht.
Aber Linux Mint 19 mate kommt ende Mai/anfangs Juni raus.
Somit läuft im Moment noch 18.3 (ist ein Ubuntu 17.10).
Im Moment ist es so, dass sh version.sh
#define X264_REV 2901
#define X264_REV_DIFF 0
#define X264_VERSION " r2901 7d0ff22"
#define X264_POINTVER "0.155.2901 7d0ff22"

ausgibt.
x264 --version jedoch
x264 0.155.x
built on May  2 2018, gcc: 5.4.0 20160609
x264 configuration: --chroma-format=all
libx264 configuration: --chroma-format=all
x264 license: GPL version 2 or later

Ich denke, wenn ich Avidemux nun compiliere, wird der Output dann auch wieder nur core 155 ausgeben.
Das versuche ich aber jetzt mal.

Edit:
Jeah, es geht.
Writing library : x264 core 155 r2901 7d0ff22

eumagga0x2a

Quote from: treki on May 04, 2018, 07:13:11 PM
Somit läuft im Moment noch 18.3 (ist ein Ubuntu 17.10).

Nein, Ubuntu 16.04.3.