Avidemux Forum

Non-English => Avidemux-German => Topic started by: treki on April 29, 2018, 07:13:51 PM

Title: x264 core erneuern
Post by: treki on April 29, 2018, 07:13:51 PM
Hallo werte Gemeinde
Benutze Avidemux 2.7.0 auf einem Linux Mint 18.3 mate 64bit.
Versuche seit geraumer Zeit den x264 core auf eine aktuelle Version zu updaten.
Habe das aktuelle von git clone http://git.videolan.org/git/x264.git genommen und compiliert.
x264 --version zeigt mir:
x264 0.155.2901 7d0ff22
(libswscale 5.0.0)
(libavformat 58.1.0)
built on Jan 18 2018, gcc: 6.3.0 20170516
x264 configuration: --chroma-format=all
libx264 configuration: --chroma-format=all
x264 license: GPL version 2 or later
libswscale/libavformat license: LGPL version 2.1 or later


Wenn ich allerdings einen Film encode, zeigt MediaInfo immer noch x264 core 148 r2643 5c65704
Was mache ich falsch? Oder hat Avidemux seine eigene Library?

Edit:
Habe nun die bin x264 in usr/local/bin einfach ausgetauscht. Ich glaube, es ist nun der aktuelle core.
Allerdings sagt MediaInfo immer noch "Writing library : x264 core 148 r2643 5c65704"
Wie kann ich veranlassen, das die richtige core Version angezeigt wird?
Title: Re: x264 core erneuern
Post by: eumagga0x2a on April 29, 2018, 10:16:23 PM
Gelinkt wird gegen Library (libx264.so), x264 is bloß das Frontend. Deinstalliere Avidemux komplett und kompiliere es aus dem git master.

http://avidemux.org/smif/index.php/topic,18182.0.html

Title: Re: x264 core erneuern
Post by: treki on April 29, 2018, 11:24:24 PM
Ah danke.
Wird beim compilieren denn die aktuell auf dem System installierte x264 genommen?
Leider immer noch: "Writing library : x264 core 148 r2643 5c65704"
Title: Re: x264 core erneuern
Post by: eumagga0x2a on April 30, 2018, 05:37:04 AM
Wie ist das eigene libx264 installiert? configure sollte unter anderem mit Optionen

--enable-shared

ausgeführt worden sein (angenommen, dass /usr/local der Standard-Präfix ist, ansonsten zur Sicherheit --prefix=/usr/local hinzufügen, wird nicht schaden). Normalerweise steht alles in /usr/local höher als /usr in den Suchpfaden.

Avidemux benutzt FIND_PATH (https://cmake.org/cmake/help/v3.10/command/find_path.html) von cmake, um Libraries zu finden: https://github.com/mean00/avidemux2/blob/master/cmake/admConfigHelper.cmake#L37
Title: Re: x264 core erneuern
Post by: Jan Gruuthuse on April 30, 2018, 06:44:49 AM
vom Terminal aus folgenden Befehl
x264 --version
Gibt an, was auf Ihrem System installiert ist (in meinem Fall Ubuntu 16.04 ist es):
Quotex264 0.148.2643 5c65704
(libswscale 3.1.101)
(libavformat 56.40.101)
(ffmpegsource 2.22.0.0)
built on Jan 18 2016, gcc: 5.3.1 20160114
x264 configuration: --bit-depth=8 --chroma-format=all
libx264 configuration: --bit-depth=8 --chroma-format=all
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: GPL version 2 or later
Sie haben nach dem Kompilieren x264 installiert?
Title: Re: x264 core erneuern
Post by: treki on April 30, 2018, 07:23:57 AM
@eumagga0x2a
Danke. Werde das heute abend mal ausprobieren.
Habe gestern noch das aktuelle libx264 deb Paket installiert. Nun sind beide Versionen drauf.
Die /usr/local/bin/x264 wurde dabei nicht erzeugt.
Wenn ich die alte entfernen will, muss ich tonnenweise andere Programme zuerst deinstallieren.
Dann sollte es genügen, wenn ich den Dateinamen anpasse (libx264-155)....nimmt den der Installer nicht automatisch die aktuellere Version?

@Gruuthuse
Ja. Habe sudo make install gemacht.
Title: Re: x264 core erneuern
Post by: eumagga0x2a on April 30, 2018, 08:31:52 AM
So ruiniert man sich eine Linux-Installation... Deinstalliere das fremde libx264-Paket, reinstalliere das von Ubuntu, konfiguriere x264 mit --prefix=/usr/local und --enable-shared, kompiliere und installiere ihn erneut. x264 in /usr/local/bin wird nicht benötigt, nur libx264.so in /usr/local/lib64 (oder /usr/local/lib — das ist von Distribution zu Distribution unterschiedlich) und x264.h in /usr/local/include.
Title: Re: x264 core erneuern
Post by: eumagga0x2a on April 30, 2018, 08:46:53 AM
Wenn Avidemux beim Kompilieren trotzdem die System-Version nimmt, liegt es an cmake. Wenn Deinstallation von libx264-dev nicht reicht, müssen wir unter Umständen mit einem privaten Patch für Avidemux ran.
Title: Re: x264 core erneuern
Post by: treki on April 30, 2018, 03:07:31 PM
Habe nur eine usr/local/lib in welcher 2 python und ein udev verzeichnis ist.
usr/local/include ist leer.
Passt das trotzdem?
Title: Re: x264 core erneuern
Post by: eumagga0x2a on April 30, 2018, 03:36:05 PM
Nein.
Title: Re: x264 core erneuern
Post by: treki on April 30, 2018, 06:39:03 PM
Habe nun ffmpeg und x264 nach Ubuntu Tutorial compiliert.
Erhalte aber nur usr/local/lib/libx264.a
die libx264.h ist im include Verzeichnis.

Zudem endet das bootStrap Script mit:
CMake Warning:
  Manually-specified variables were not used by the project:

    CMAKE_EDIT_COMMAND
    ENABLE_QT5


-- Build files have been written to: /home/daniel/x264/avidemux2/buildPluginsCommon
** Failed at make, result in /tmp/logbuildPluginsCommon**
Title: Re: x264 core erneuern
Post by: eumagga0x2a on April 30, 2018, 11:14:45 PM
Quote from: treki on April 30, 2018, 06:39:03 PM
Habe nun ffmpeg und x264 nach Ubuntu Tutorial compiliert.

Nach welchem Tutorial? Avidemux nutzt sein internes ffmpeg.

QuoteErhalte aber nur usr/local/lib/libx264.a

--enable-shared vergessen?

Übrigens, "usr/local/lib" und "/usr/local/lib" sind ganz unterschiedliche Pfade...

QuoteZudem endet das bootStrap Script mit:
CMake Warning:
  Manually-specified variables were not used by the project:

    CMAKE_EDIT_COMMAND
    ENABLE_QT5


-- Build files have been written to: /home/daniel/x264/avidemux2/buildPluginsCommon
** Failed at make, result in /tmp/logbuildPluginsCommon**


In der genannten Datei /tmp/logbuildPluginsCommon steht, warum die Kompilierung der Plugins der Kategorie "Common", zu denen auch das x264-Plugin gehört, fehlgeschlagen ist. Es ist allerdings sinnlos, mit der Kompilierung von Avidemux anzufangen bevor libx264 richtig installiert worden ist.
Title: Re: x264 core erneuern
Post by: treki on May 01, 2018, 06:14:54 AM
Hallo eumagga. Erst mal vielen Dank, dass Du Dir die Zeit nimmst, mir zu helfen.
Habe nach https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu compiliert.
Allerdings ist nun das eingetreten, was man schon lange befürchten musste.....von Avidemux läuft nur noch die GUI, egal ob ich es komplett de- und installieren.
Aber egal, werde eine VM aufsetzen um zu üben.
Gibt es eine Dist, welche Du besonders empfehlen kannst für mein Vorhaben mit Avidemux?
Title: Re: x264 core erneuern
Post by: eumagga0x2a on May 01, 2018, 10:46:54 AM
Quote from: treki on May 01, 2018, 06:14:54 AM
Habe nach https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu compiliert.

FFmpeg ist uninteressant, die Frage bezog sich auf x264.

QuoteAllerdings ist nun das eingetreten, was man schon lange befürchten musste.....von Avidemux läuft nur noch die GUI, egal ob ich es komplett de- und installieren.

???

Bitte avidemux3_qt5 im Terminal als

avidemux3_qt5 > ~/admlog.txt

ausführen, "admlog.txt" komprimieren und an die Antwort anhängen.

Quote
Gibt es eine Dist, welche Du besonders empfehlen kannst für mein Vorhaben mit Avidemux?

Nimm doch das Original-Ubuntu 18.04, bringt gleich x264 in Version 152 mit.
Title: Re: x264 core erneuern
Post by: treki on May 01, 2018, 04:45:00 PM
Genius. Du hast 5 von 5 Sternen.
Dank Deiner Hilfe ist es mir endlich gelungen!!!
Writing library :  x264 core 155
Du hast mir auch in vielen Sachen den Durchblick verschafft:
--enable-shared
nur x264 compilieren
avidemux selber compilieren
usw!
VIELEN VIELEN tausend Dank.
Title: Re: x264 core erneuern
Post by: treki on May 02, 2018, 10:50:23 AM
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!
Title: Re: x264 core erneuern
Post by: treki on May 02, 2018, 09:30:22 PM
Lieber eumagga0x2a
Weisst Du, warum keine Revision angezeigt wird sondern nur der Core?
Title: Re: x264 core erneuern
Post by: eumagga0x2a on May 02, 2018, 10:14:31 PM
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.
Title: Re: x264 core erneuern
Post by: treki on May 03, 2018, 07:00:15 AM
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]
Title: Re: x264 core erneuern
Post by: eumagga0x2a on May 03, 2018, 09:27:26 AM
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?
Title: Re: x264 core erneuern
Post by: treki on May 03, 2018, 09:36:46 AM
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 ^^
Title: Re: x264 core erneuern
Post by: eumagga0x2a on May 03, 2018, 10:55:53 AM
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.
Title: Re: x264 core erneuern
Post by: treki on May 03, 2018, 11:50:33 AM
Ok. Werde heute abend mal testen. Sollte dies dann auch das Problem der Revision (wird nicht angezeigt mit MediaInfo) lösen?
Title: Re: x264 core erneuern
Post by: eumagga0x2a on May 03, 2018, 12:45:38 PM
Das weiß ich noch nicht. Versuch macht klug :-D
Title: Re: x264 core erneuern
Post by: treki on May 03, 2018, 01:01:18 PM
Muss ich hachher Avidemux immer neu compilieren?
Werde auf jeden Fall dann berichten.
Title: Re: x264 core erneuern
Post by: eumagga0x2a on May 03, 2018, 02:09:38 PM
--rebuild sollte genügen.
Title: Re: x264 core erneuern
Post by: treki on May 04, 2018, 06:01:20 AM
$ 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?
Title: Re: x264 core erneuern
Post by: eumagga0x2a on May 04, 2018, 06:36:55 PM
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?
Title: Re: x264 core erneuern
Post by: treki on May 04, 2018, 07:13:11 PM
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
Title: Re: x264 core erneuern
Post by: eumagga0x2a on May 04, 2018, 08:44:11 PM
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.
Title: Re: x264 core erneuern
Post by: treki on May 04, 2018, 08:47:25 PM
Ok, wo recht hast, hast recht ^^
Du bist auf jeden Fall ein compilier Profi.
Ich das Gegenteil. Du hast mir sehr weitergeholfen. Danke nochmal dafür.
Leider gibt's hier keinen "Danke" Knopf....
Title: Re: x264 core erneuern
Post by: treki on October 12, 2018, 03:49:34 PM
Ich steh mal wieder auf dem Schlauch.
Habe nach folgender Anleitung den core erneuert.
Terminal zeigt:

$ x264 --version
x264 0.157.2935 545de2f
(libswscale 5.2.100)
(libavformat 58.18.104)
built on Oct 12 2018, gcc: 5.4.0 20160609
x264 configuration: --chroma-format=all
libx264 configuration: --chroma-format=all
x264 license: GPL version 2 or later
libswscale/libavformat license: nonfree and unredistributable
WARNING: This binary is unredistributable!

Meine Anleitung:

x264 core erneuern:

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 --enable-static
make
sudo make install

git clone git://git.videolan.org/x264.git
cd x264
./configure --prefix=/usr/local --enable-shared --enable-pic --enable-static
make
sudo make install


ffmpeg aktualisieren:

cd
git clone --depth 1 git://source.ffmpeg.org/ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-libmp3lame --enable-libopencore-amrnb \
  --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis \
  --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3
make
sudo checkinstall --pkgname=ffmpeg --pkgversion="5:$(date +%Y%m%d%H%M)-git" --backup=no \
  --deldoc=yes --fstrans=no --default
hash x264 ffmpeg ffprobe

Avidemux compilieren:
Vorher entfernen:
sudo apt purge avidemux*
sudo rm /usr/bin/avidemux3_cli /usr/bin/avidemux3_jobs_qt5 /usr/bin/avidemux3_qt5 /usr/lib/libADM*
sudo rm -rf /usr/include/avidemux /usr/lib/ADM_plugins6 /usr/share/ADM6_addons /usr/share/avidemux6


Inhalt von https://github.com/mean00/avidemux2  als zip runterladen, entpacken
sudo bash bootStrap.bash
Inhalt von install/usr nach /usr kopieren          sudo cp -R install/usr/* /usr/

Nach dem Compilieren von Avidemux steht der Mpeg4 AVC (x264) nicht mehr zur Verfügung.
Was mache ich falsch?
OS ist Linux Mint 18.3 64bit , Kernel 4.15.0-36

Edit:
Auf dem Linux Mint 19 64bit Rechner hat es plötzlich nach x Versuchen geklappt.
Ich kann es auf dem LM18.3 Rechner aber nicht reproduzieren.
Wirklich sehr merkwürdig.
Title: Re: x264 core erneuern
Post by: eumagga0x2a on October 12, 2018, 07:30:16 PM
sudo ldconfig

nach der Installation von libx264 (und nach Installation von Avidemux) auszuführen vergessen?

Wieso die Avidemux-Source als ZIP herunterladen statt zu klonen?

Bitte vom Ausführen von bootStrap.bash mit sudo absehen, das ist unnötig und gefährlich.
Title: Re: x264 core erneuern
Post by: treki on October 12, 2018, 07:56:43 PM
Genius
Am sudo ldconfig hat's gelegen.
Jetzt läuft's auf Anhieb.
Vielen Dank