Hardware-Encoder Linux-fähig?

  • Hi,


    Ich glaube mein Hauptproblem ist, dass ich Ubuntu trusty drauf habe.

    nein liegt nicht an ubuntu-14.04 ...es ist die Version von FFmpeg.

    Du benötigst min. FFmpeg-3.3.0 damit die GPU auch "h264_nvenc" unterstützt.

    Nur "nvenc" geht mit Nvidia GT 630/730/740 nicht. Hier im Forum gibt es einen Fred

    über Karten die "h264_nvenc/nvenc" unterstützen. Mit FFmpeg-3.3.0 funktioniert

    auch noch libvdau. Version Nvidia-Treiber spielt da wohl auch noch mit. Wie bereits geschrieben

    FFmpeg-3.3.0/Nvidia-387/GT 630 kein Problem "h264_nvenc" unter Ubuntu-14.04

    Gruss

    Wolfgang

    TT S2-6400 - saa716x kompilieren unter 20.04(Focal)

  • Bin jetzt ein bißchen verwirrt mit den ganzen Versionen/Kombinationen...

    Bei mir sieht's jetzt so aus:

    Hab das alte libva-dev wieder installiert und den Compile-Vorgang nochmal gestartet. Jetzt bricht das Kompilieren wieder grundlos ab (Log: logbuildCore.txt). Daraus schließe ich mal, dass es (wie ihr auch schreibt) am veralteten ffmpeg/libav liegt.


    Dass ich aber tatsächlich ein Problem mit Ubuntu 14 habe, stimmt trotzdem:


    Quote

    Ubuntu 14.04

    Diese Ubuntu-Version enthält kein FFmpeg. Stattdessen muss man hier Libav installieren. Anschließend können die unter Problembehebung genannten Tipps weiterhelfen.

    Quelle: Ubuntuusers-Wiki > ffmpeg


    Jetzt ist im erwähnten Abschnitt Problembehebung folgendes zu lesen: Man solle...

    Quote

    das Paket libav-tools (siehe Libav) deinstallieren. Danach installiert man FFmpeg entweder Aus dem Quellcode oder über die Linux Static Builds.

    ...der Link zu den so genannten Static Builds führt schlussendlich zu einer neue ffmpeg-Version, die unter Ubuntu 14 laufen soll. Hab's schon runtergeladen. Werde es natürlich ausprobieren und hier berichten.

  • Hallo,


    ..der Link zu den so genannten Static Builds führt schlussendlich zu einer neue ffmpeg-Version, die unter Ubuntu 14 laufen soll. Hab's schon runtergeladen. Werde es natürlich ausprobieren und hier berichten.

    Sources findest du hier -> https://launchpad.net/~mango-vdr/+archive/ubuntu/test-hevc


    Gruss

    Wolfgang

    TT S2-6400 - saa716x kompilieren unter 20.04(Focal)

  • Zwar empfiehlt das Ubuntuusers-Wiki, libav und ffmpeg vor der Installation des static-builds zu deinstallieren. Allerdings würde mir der Paketmanager dann ganz viele Multimedia-Programme mitlöschen. Stattdessen habe ich den Schritt einfach übersprungen und von Hand die vier Dateien

    Code
    ffmpeg-10bit qt-faststart ffprobe und ffmpeg

    aud dem Static-Build in den Ordner /usr/local/bin kopiert. Seltsamerweise wurde dabei nichts überschrieben. Kompilieren von Avidemux lief wieder nicht durch.

    Daher habe ich libva-dev wieder runtergeschmissen. Ohne libva-dev wird Avidemux (genau wie zuvor) einwandfrei kompiliert.

    Brauche ich das libva denn nicht für die Hardware-Beschleunigung?

    Gerade sehe ich, dass beim Kompilieren die ganzen wichtigen Codecs nicht gefunden wurden:


    ...ich versuch wolfi's Repo!


    Edit:


    ...weil da libva und libva-dev in neuerer Version drin ist.

  • Es klappt immernoch nicht! Hab jetzt wolfi's Repo hinzugefügt, von dort libva und libva-dev installiert. Damit lief der Compile-Vorgang auch einwandfrei durch. Doch mit dem resultierenden Avidemux bekomme ich immernoch eine Fehlermeldung beim Speichern in NVIDIA H264.


    Beim Kompilieren kam am Ende auch wieder die Ausgabe, dass h264 nicht gefunden wurde (wie im letzten Post beschrieben).


    Übrigens muss ich nach der Installation der avidemux-Pakete immer die Rechte einige Bibliotheken ändern, damit das Avidemux startet:

    Code
    chmod ugo+r /usr/lib/libADM6*
    chmod ugo-x /usr/lib/libADM6*

    Erst danach haben alle Bibliotheken in dem Verzeichnis die gleichen Rechte gesetzt und Avidemux startet.


    Edit:


    Habe soeben ffmpeg3 aus wolfi's repo dazuinstalliert und avidemux nochmal kompiliert. Gleiches Ergebnis wie im Versuch zuvor: Beim Kompilieren wird h264 nicht gefunden und Avidemux kann anschließend nicht per Grafikkarte enkodieren.

  • Hallo!


    Habe soeben ffmpeg3 aus wolfi's repo dazuinstalliert und avidemux nochmal kompiliert. Gleiches Ergebnis wie im Versuch zuvor: Beim Kompilieren wird h264 nicht gefunden und Avidemux kann anschließend nicht per Grafikkarte enkodieren.

    Sorry, x264 lag in einem andern PPA hab es ins gleiche PPA geschoben

    > https://launchpad.net/~mango-v…shed&field.series_filter=


    Gruss

    Wolfgang

    TT S2-6400 - saa716x kompilieren unter 20.04(Focal)

  • :huh:8| Danke!


    Edit:


    Code
    x264:
     Hängt ab von: liblsmash2  but it is not installable

    Edit:


    Diese Repo hat auch die neuesten Sachen und ist aber NUR für Ubuntu Trusty 14.04. Der Autor rät von einem anschließenden Systemupdate ab.


    https://launchpad.net/~mc3man/+archive/ubuntu/trusty-media


    Da ist so viel neuer...ich trau mich gar nicht, das alles zu installieren. Auch ffmpeg ist in der Version 7:3.3.3~trusty2 verfügbar.

  • Hallo!

    Diese Repo hat auch die neuesten Sachen und ist aber NUR für Ubuntu Trusty 14.04. Der Autor rät von einem anschließenden Systemupdate ab.

    Abhänigkeiten die noch fehlen, kannst du aus diesem PPA nehmen.

    "liblsmash,liblsmash-dev,yasm"

    Quote

    Get:1 http://ppa.launchpad.net/mc3man/trusty-media/ubuntu/ trusty/main yasm amd64 1.3.0 [350 kB]

    Get:5 http://ppa.launchpad.net/mc3man/trusty-media/ubuntu/ trusty/main liblsmash2 amd64 2.3.0-1~trusty [170 kB]

    Get:6 http://ppa.launchpad.net/mc3man/trusty-media/ubuntu/ trusty/main liblsmash-dev amd64 2.3.0-1~trusty [216kB]

    Gruss

    Wolfgang

    TT S2-6400 - saa716x kompilieren unter 20.04(Focal)

    Edited 2 times, last by wolfi.m ().

  • Sorry, hab jetzt die andere Repo genommen, da war schon alles drin. Hab jetzt auch mal die avidemux-Quellen von git benutzt, statt die von der Homepage. Es scheint aber die selbe Version zu sein. Leider kann ich im resultierenden Avidemux immernoch nicht mit NVIDIA h264 speichern.


    Beim Kompilieren wurde x264 gefunden, trotzdem geht's immernoch nicht. Hier ein Ausschnitt vom Compile-Vorgang, wo das Vorhandensein einiger Sachen geprüft wurde:




    Edit:


    Ich frage mich, ob das NVENC richtig installiert ist. Nach der Anleitung, die ich benutzt habe, werden lediglich einige Header-Dateien von der VLC-Homepage runtergeladen. Die anschließende Prüfung mit


    Code
    ffmpeg -encoders 2>/dev/null | grep nvenc

    liefert bei mir keine Ausgabe. Eigentlich sollte (laut Anleitung) dann sowas kommen:


    Code
    V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264) V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264) V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264) V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc) V..... hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)

    Hab gerade mal die ffmpeg-Version 3.3.3 von der anderen Repo entfernt und die Version 3.3.0 von wolfi's repo benutzt, aber bekomme immernoch keine Ausgabe. Wo kriegt man das NVENC denn normalerweise her, wenn nicht von der VLC-Seite?


    Edit:


    Als ich ffmpeg 3.3.3 per Synaptics installiert habe, hätte ich vorher die vier ffmpeg-Dateien aus /usr/local/bin weglöschen sollen, die ich dort per Hand reinkopiert hatte. Das war der Static-Build aus dem Ubunutuusers-Wiki (wie zuvor beschrieben). Der ist also Müll, weil nvenc da nicht mit reinkompiliert wurde.


    wolfi's repo mit ffmpeg3 installiert leider eine datei ffmpeg3, auf die vermutlich erstmal per Hand verlinkt werden muss, damit ffmpeg unter gleichnamigem Befehl verfügbar ist. Jetzt habe ich also die vier ffmpeg-Dateien aus (usr/local/bin weggelöscht und ffmpeg aus der anderen Repo installiert...und da bekomme ich jetzt auch eine Ausgabe:


    Code
    ffmpeg -encoders 2>/dev/null | grep nvenc
     V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
     V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
     V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)
     V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)
     V..... hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)

    Jetzt kompiliere ich mal Avidemux neu...

  • ...und es encoded immernoch nicht.


    Edit:


    Wenn ich avidemux mal vom Terminal aus starte gibt's ja ganz viel zu lesen. Wenn das Enkodieren fehlschlägt, erscheint das hier auf der Konsole:


    Da fällt mir besonders die Zeile


    Code
    [adm_lavLogCallback] 23:17:31-723  [lavc] This encoder is deprecated, use 'h264_nvenc' instead   

    ..in's Auge. Wieso benutzt der denn h264_nvenc nicht? Das ist ja jetzt ganz sicher im ffmpeg drin.

  • Es funktioniert!

    330 fps! Das ist 13-fach! Ich glaub's ja nicht!

    Es war der Grafik-Treiber, der musste auf Version 384. Die ppa dazu ist:


    https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa


    Bin drauf gekommen weil auch ffmpeg die Umwandlung verweigerte. Internetsuche zeigte, dass die zweite Meldung


    Code
    [lavc] Cannot load NvEncodeAPIGetMaxSupportedVersion

    oft auf einen für Encoder-Beschleunigung inkompatiblen Grafiktreiber hinweist. Hab erst auf die höchste 340-Version geupdatet. Als es damit auch nicht ging, dann Update auf 384.x. Bin ich froh, dass Synaptics das automatisch richtig installiert hat. Hab bei den Reboots sehr fest die Daumen gedrückt.


    Vielen Dank nochmal für die vielen guten Tips!

  • Hi,

    Es funktioniert!

    330 fps! Das ist 13-fach! Ich glaub's ja nicht!

    da kann man sich nee Menge an Zeit sparen.Freut mich, dass es bei Dir jetzt auch läuft.

    Es war der Grafik-Treiber, der musste auf Version 384. Die ppa dazu ist:

    ...den nvidia-384 gibt es auch in den Ubuntu-Quellen!

    Code
    root@wolfi-ku:/# apt-cache policy nvidia-384
    nvidia-384:
      Installiert:           (keine)
      Installationskandidat: 384.130-0ubuntu0.14.04.1
      Versionstabelle:
         384.130-0ubuntu0.14.04.1 0
            500 http://de.archive.ubuntu.com/ubuntu/ trusty-updates/restricted amd64 Packages
            500 http://security.ubuntu.com/ubuntu/ trusty-security/restricted amd64 Packages


    Gruss

    Wolfgang

    TT S2-6400 - saa716x kompilieren unter 20.04(Focal)

  • Danke. Ich probier gerade die verschiedenen Encoder-Einstellungen aus. Es gibt leider weniger als beim CPU-Kodieren, doch die Geschwindigkeit entschädigt für alles. Die optimalen und neuen Einstellungen wären einen eigenen Thread wert.


    Ein Problem taucht jetzt noch mit dem VLC auf. Wenn h264 in mkv kodiert wird, will VLC die Dateien nicht mehr abspielen. Andere Player scheinen kein Problem zu haben. Habe Kodi, SMplayer und Xine probiert. Xine spielt Nvidia-kodiertes manchmal zu langsam ab, aber auch nicht immer. Laut VLC können irgendwelche Blöcke nicht gelesen werden. Wechsle ich den Container zu .ts, zickt VLC nicht mehr rum. Habe zwei verschiedene VLC-Versionen probiert. Kein Unterschied.


    Ich kann meine selbst-kompilierten .deb-Pakete für Avidemux 2.7.1 übrigens gerne uploaden, falls Interesse besteht.


    Edit:


    Hier sind die Pakete:


    Avidemux 2.7.1 für Ubuntu Trusty 14.04 (64 Bit) und ffmpeg 3.3.3:


    avidemux3-cli-2.7.1-180608-dev.deb (1.71 kB)

    avidemux3-cli-2.7.1-180608-runtime.deb (1.52 MB)

    avidemux3-core-2.7.1-180608-dev.deb (356.91 kB)

    avidemux3-core-2.7.1-180608-runtime.deb (3.9 MB)

    avidemux3-plugins-CLI-2.7.1-180608-plugins.deb (45.46 kB)

    avidemux3-plugins-COMMON-2.7.1-180608-plugins.deb (1.4 MB)

    avidemux3-plugins-QT4-2.7.1-180608-plugins.deb (312.31 kB)

    avidemux3-qt4-2.7.1-180608-dev.deb (6.35 kB)

    avidemux3-qt4-2.7.1-180608-runtime.deb (2.96 MB)

    avidemux3-settings-2.7.1-180608-settings.deb (58.82 kB)


    Installation:

    • Ffmpeg 3.3.3 installieren
    • Neueste nvidia-Grafiktreiber installieren
    • Das Paket x264 installieren

    Anschließend:

    Code
    sudo dpkg -i avidemux3-core*.deb
    sudo dpkg -i avidemux3-cli*.deb
    sudo dpkg -i avidemux3-qt4*.deb
    sudo dpkg -i avidemux3-settings*.deb
    sudo dpkg -i avidemux3-plugins*.deb


    Anschließend:

    Code
    sudo chmod ugo+r /usr/lib/libADM6*
    sudo chmod ugo-x /usr/lib/libADM6*

    Start mit:

    Code
    /usr/bin/avidemux3_qt4
  • Jetzt muss ich hier auch mal einhaken...


    Ich würde gerne auch "beschleunigt" transcodieren können.


    Nutze Arch Linux.


    Grafikkarte sollte eigentlich deutlich ausreichend sein (Nvidia GTX 1070).


    ffmpeg meldet


    Quote

    V..... h264_nvenc NVIDIA NVENC H.264 encoder (codec h264)

    V..... nvenc NVIDIA NVENC H.264 encoder (codec h264)

    V..... nvenc_h264 NVIDIA NVENC H.264 encoder (codec h264)

    V..... nvenc_hevc NVIDIA NVENC hevc encoder (codec hevc)

    V..... hevc_nvenc NVIDIA NVENC hevc encoder (codec hevc)


    Habe aber keine Ahnung wie ich das unter avidemux nutzen können soll. Muss ich avidemux neu kompilieren? Wenn ja, mit welchen Einstellungen?

  • Die Antwort kommt zwar ein bißchen spät, aber ja, man muss selbst kompilieren. Hier sind die allgemeinen Avidemux-Compile-Anweisungen. Mit Arch-Linux kenne ich mich nicht aus. Ich kann nur für Ubuntu sprechen. Man muss unbedingt hier die Nvidia-FFmpeg-Header-Dateien runterladen, damit der Compiler das im System installierte VAAPI und LibVA nutzen kann.

    Das heißt libva, vaapi und natürlich ffmpeg müssen auf jeden Fall installiert sein, um Videobeschleunigung zu bekommen. Ob noch was fehlt wird beim Kompilieren angezeigt. Das sieht dann zum Beispiel so aus:


    ...bei diesem Durchgang fehlten also noch viele Audio- und Video-Codecs im System, die man mit Paketmanager nachinstallieren muss. Wichtig: Der Compiler findet nur Pakete, die mit "-dev" enden. Ist im Paketmanager also zum Beispiel libvorbis installiert, nützt das nichts, um Vorbis-Unterstützung im avidemux zu bekommen. Das Paket libvorbis-dev muss dafür installiert sein.

    Das Compiler-Skript berichtet außerdeb, ob NVENC, libva und VAAPI gefunden wurden. Das fehlt jetzt in der Ausgabe, die ich oben gepostet habe. Sind die drei Sachen drin, sieht's schonmal sehr gut aus, mit der Videobeschleunigung.


    Das Kompilieren wird so gestartet:

    Code
     bash bootStrap.bash --deb --with-qt --with-cli --with-plugins --with-core


    ...wie man sieht gibt's da verschiedene Flags, um dem Compiler-Skript zu sagen was man haben will. Ich wollte also das Programm mit allen Plugins, QT5-Oberfläche, Kommandozeilenprogramm und das ganze als .deb-Pakete für die anschließende Installation.


    Eine Liste aller möglichen Flags gibt's mit dem Befehl:

    Code
    bash bootStrap.bash --help


    Ich habe diesen alten Thread jetzt nach drei Jahren zum Glück wiedergefunden, weil es tatsächlich immernoch nirgendwo Anleitungen gibt. Standardmäßig ist Avidemux auch nach drei Jahren immernoch ohne NVENC-Unterstützung in den Paketquellen. Ich habe auch nirgendwo Alternativ-Pakete gefunden - nicht mal AppImages oder Snap-Pakete. VDPAU und LibVA waren in meinem aktuellen Ubuntu vorinstalliert. Auch ffmpeg kommt inzwischen standardmäßig mit NVENC-Unterstützung...nur leider die Anwender-Programme nicht.


    Ich wusste wirklich nicht mehr, wie ich damals das Avidemux kompiliert hatte. Bitte nicht löschen, dieser Thread ist richtig wertvoll!

Participate now!

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