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

  • 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:


    Zitat

    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...

    Zitat

    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

  • 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
    1. 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
    1. chmod ugo+r /usr/lib/libADM6*
    2. 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

  • :huh:8| Danke!


    Edit:


    Code
    1. x264:
    2. 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"

    Zitat

    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

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von 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
    1. ffmpeg -encoders 2>/dev/null | grep nvenc

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


    Code
    1. 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
    1. ffmpeg -encoders 2>/dev/null | grep nvenc
    2. V..... h264_nvenc NVIDIA NVENC H.264 encoder (codec h264)
    3. V..... nvenc NVIDIA NVENC H.264 encoder (codec h264)
    4. V..... nvenc_h264 NVIDIA NVENC H.264 encoder (codec h264)
    5. V..... nvenc_hevc NVIDIA NVENC hevc encoder (codec hevc)
    6. 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
    1. [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
    1. [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
    1. root@wolfi-ku:/# apt-cache policy nvidia-384
    2. nvidia-384:
    3. Installiert: (keine)
    4. Installationskandidat: 384.130-0ubuntu0.14.04.1
    5. Versionstabelle:
    6. 384.130-0ubuntu0.14.04.1 0
    7. 500 http://de.archive.ubuntu.com/ubuntu/ trusty-updates/restricted amd64 Packages
    8. 500 http://security.ubuntu.com/ubuntu/ trusty-security/restricted amd64 Packages


    Gruss

    Wolfgang

  • 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
    1. sudo dpkg -i avidemux3-core*.deb
    2. sudo dpkg -i avidemux3-cli*.deb
    3. sudo dpkg -i avidemux3-qt4*.deb
    4. sudo dpkg -i avidemux3-settings*.deb
    5. sudo dpkg -i avidemux3-plugins*.deb


    Anschließend:

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

    Start mit:

    Code
    1. /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


    Zitat

    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?