Hardware-Encoder Linux-fähig?

  • warum besorgst du dir dann nicht nee Nvidia GT630 kostet in der Bucht auch nur ca.25.-€

    Mit FFmpeg 3.3.0 > und dem passenden Nvidia-Treiber( hier nvidia-387) kannst du "h264_nvenc" nutzen


    Falls es für ihn Ok ist Abstriche in Sachen Qualität und/oder Dateigröße zu machen. Vergleiche https://www.reddit.com/r/hardw…with_handbrake_and_intel/


    Ich mache alle Codiergeschichten nur (noch) über CPU. Inwieweit das leistungstechnisch mit diesem kleinen Adapter aus dem Eingangsposting mithalten kann kommt wohl auf die CPU drauf an die zur Verfügung steht, ich nehme allerdings jede Wette an dass bei dieser "Lösung" eher die Software der limitierende Faktor ist...

  • Mit der maximalen Auflösung des alten Hardware-Encoders hat sich das Thema wohl erledigt. 640x480 ist ja echt lau. Vielen Dank für's Finden.


    Hier verbaut ist eine Geforce GT 740. Ich wandle immer mit Avidemux um, das ja angeblich Hardware-Beschleunigung unterstützt. Jetzt guck ich grade extra mal: 30 fps bekomme ich beim Umwandeln in h.264. Das ist 1,2-fach. Sicher, dass die ffmpeg-Werte stimmen?

    Irgendwas stimmt hier nicht...


    Edit:


    Kann es sein, dass Avidemux VDPAU nur zum Dekodieren verwendet? Hab das hier gefunden und das scheint nur für die Wiedergabe zu sein. Au Mann, das wär' aber sch**e! Hab mit Avidemux gescriptet und extra optimierte Profile angelegt.

    Avidemux kann ja per Skript auch Filter (z.B De-Interlace) verwenden. Und die Codec-Feineinstellungen...geht das mit ffmpeg überhaupt? Nee...ich will echt nicht wechseln müssen! ffmpeg ist doch eingestellt worden oder irre ich mich? Das Heißt doch jetzt avconv oder so ähnlich, mit geänderter Syntax.

  • verbaut ist eine Geforce GT 740

    Mit entsprechender Software geht das problemlos, selbige bei jedem aktuelleren Intel CPU der letzten Jahre.


    FFmpeg kann es auch - dazu muss dein System aber aktuell und die nötigen Treiber mitbringen. Gerade die Nvidia encoding Geschichte braucht extra Treiber/libs.

    Alternativ sowas wie Emby benutzen, das macht es dann im Hintergrund von selbst.


    Würde natürlich SInn machen das ganze direkt in HEVC umzuwandeln (H265), spart Platz.

  • Hi,

    H. 265 kann seine Grafikkarte aber nicht!

    Mfg Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • Hi,

    H. 265 kann seine Grafikkarte aber nicht!

    Mfg Stefan

    H.264 ist NICHT gemeint oder? Laut den angefügten Screenshots kann meine Graka das wohl. Hab von h265 noch nie gehört und das erst für einen Tippfehler gehalten.


    Meine Avidemux-Version ist 2.6.12 aus den offiziellen Ubuntu-Quellen. Laut Synaptic-Paketmanager lautet die exakte Versionsnummer: 1:2.5.6-1~getdeb4~trusty


    Auf dem MediaPC läuft kodi, das VDPAU ebenfalls unterstützt. In den Filmeinstellungen kann ich während der Wiedergabe zum Beispiel On-The-Fly-Deinterlacing oder -Schärfe-Filer einschalten.


    Avidemux gibt an der Commandozeile beim Encodieren ganz viele Infos aus. Bezüglich VDPAU ist das hier zu lesen:


    Code
    1. Cannot use VDPAU in cli mode 1,1
    2. Cannot use LIBVA in cli mode 1,1

    und:


    Ich kann in den Avidemux-Einstellungen VDPAU als Decoder einschalten. Im Tab Display ist VDPAU als Anzeige-Option ausgewählt. Da steht aber nirgends was von Encodieren. Hab Screenshots angefügt.

  • H. 265 kann seine Grafikkarte aber nicht!

    oh dachte die könnte das schon, dann wahrscheinlich erst die 900er


    Hab von h265 noch nie gehört und das erst für einen Tippfehler gehalten.

    Das ist das Standard Format für UHD, kann natürlich auch auf normale Formate angewandt werden, ein 1080p Spielfilm ist dann ca 2-3gb groß.

    Der Client muss es aber auch beherrschen.


    nur so als Tipp, je nachdem was du vor hast :)

  • H265 = HEVC unter diesem Begriff bekannter


    vdr-User-# 755 to_h264 chk_r vdr-transcoding

  • Hallo,


    Das Heißt doch jetzt avconv oder so ähnlich, mit geänderter Syntax

    "libav" gibt es nicht mehr , war ein Clone von FFmpeg ...wurde ab Ubuntu-14.10 wieder durch

    FFmpeg ersetzt.

    Meine Avidemux-Version ist 2.6.12 aus den offiziellen Ubuntu-Quellen

    nein kommt nicht aus den "offiziellen Ubuntu-Quellen"->> getdeb.net

    Mit der Version von Libav & Avidemux wirst du nie den Encoder der Nvidia

    ansprechen können ...to old!


    Gruss

    Wolfgang

  • Das ist ja furchtbar, ein einziges Durcheinander. Hab jetzt die Quellen von avidemux 2.7.1 von der Homepage runtergeladen. Zum Kompilieren musste ich cmake3 nachinstallieren und das alte cmake ersetzen. Desweiteren habe ich versucht, NVENC zu installieren, gemäß dieser Anleitung.


    Jetzt kommt beim Kompilieren die Meldung, dass NVENC nicht gefunden werden kann. Avidemux kompiliert zwar weiter, aber ohne NVENC ist es ja nutzlos für mich.


    NVENC hatte ich so installiert:


    Code
    1. mkdir $HOME/nv-codec-headers_build && cd $HOME/nv-codec-headers_build
    2. git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
    3. cd nv-codec-headers

    ein anschließendes


    Code
    1. make

    lieferte folgenden Fehler:


    Code
    1. sed 's#@@PREFIX@@#/usr/local#' ffnvcodec.pc.in > ffnvcodec.pc

    Trotzdem lief "make install" anschließend durch und platzierte mir neue Dateien in


    /usr/local/lib/pkgconfig/

    und

    /usr/local/include/ffnvcodec


    und zwar diese hier (in /usr/local/include/ffnvcodec):

    Code
    1. dynlink_cuda.h dynlink_loader.h nvEncodeAPI.h dynlink_cuviddec.h dynlink_nvcuvid.h

    und diese in das erstgenannte Verzeichnis (/usr/local/lib/pkgconfig/):

    Code
    1. ffnvcodec.pc

    Warum findet Avidemux die jetzt nicht beim Kompilieren? Fehlermeldung sieht so aus:


    Code
    1. -- Checking for NVENC
    2. -- *****************
    3. -- nvenc header not Found

    und:

    Die komplette Ausgabe (bis zum manuellen Abbruch) liegt hier: pastebin-link

  • Avidemux erwartet die nvEncodeAPI.h in: /usr/include /usr/include/nvenc /usr/include/x86_64-linux-gnu


    Platzier mal einen entsprechenden Symlink. Bin mir auch nicht sicher, ob avidemux mit SDK v8 kompatibel ist oder eher etwas älteres erwartet.

  • Da hat was geklappt:


    NVENC hat er der Compiler jetzt gefunden. Doch VDPAU, libva usw stehen immernoch auf "NO".



    Edit:


    Hab noch mehr in der Ausgabe gefunden:

    Edit:

    Gegen fehlendes VDPAU hat das Paket libvdpau-dev geholfen. Jetzt suche ich noch nach Lösungen für fehlende Dateien von libva und xvideo.


    Edit:


    Gefunden: Die Pakete lauten libva-dev und libxv-dev


    Edit:


    Die Ausgabe schaut jetzt so aus:

    Das Kompilieren läuft aber nicht durch. Am Ende steht:


    Code
    1. ** Failed at make, result in /tmp/logbuildCore**

    in besagter Datei /tmp/logbuildCore steht am Ende:


    Code
    1. CMakeFiles/ADM_coreVideoCodec6.dir/ADM_ffVp9.cpp.o -Wl,--as-needed -Wl,-z,defs -lstdc++ ../../ADM_coreImage/src/libADM_coreImage6.so ../../ADM_coreUtils/src/libADM_coreUtils6.so ../../ffmpeg/build/libavcodec/libADM6avcodec.so.57 ../../ffmpeg/build/libavformat/libADM6avformat.so.57 ../../ffmpeg/build/libavutil/libADM6avutil.so.55 ../../ADM_coreUI/src/libADM_coreUI6.so ../../ADM_core/src/libADM_core6.so -Wl,--as-
    2. needed -Wl,-z,defs -lstdc++ -ldl -lm -lpthread ../../ADM_coreUtils/src/Source/libADM_json.a ../../ffmpeg/build/libavutil/libADM6avutil.so.55 ../../ffmpeg/build/libswscale/libADM6swscale.so.4 ../../ffmpeg/build/libpostproc/libADM6postproc.so.54 -Wl,-rpath,/home/mediapc/Programme/avidemux_2.7.1/buildCore/ADM_coreImage/src:/home/mediapc/Programme/avidemux_2.7.1/buildCore/ADM_coreUtils/src:/home/mediapc/Programme/avidemux_2.7.1/buildCore/ffmpeg/build/libavcodec:/home/mediapc/Programme/avidemux_2.7.1/buildCore/ffmpeg/build/libavformat:/home/mediapc/Programme/avidemux_2.7.1/buildCore/ffmpeg/build/libavutil:/home/mediapc/Programme/avidemux_2.7.1/buildCore/ADM_coreUI/src:/home/mediapc/Programme/avidemux_2.7.1/buildCore/ADM_core/src:/home/mediapc/Programme/avidemux_2.7.1/buildCore/ffmpeg/build/libswscale:/home/mediapc/Programme/avidemux_2.7.1/buildCore/ffmpeg/build/libpostproc:
    3. make[2]: Verzeichnis »/home/mediapc/Programme/avidemux_2.7.1/buildCore« wird verlassen
    4. [ 83%] Built target ADM_coreVideoCodec6
    5. make[1]: Verzeichnis »/home/mediapc/Programme/avidemux_2.7.1/buildCore« wird verlassen
    6. make: *** [all] Fehler 2


    Tja...Fehler 2...sonst nichts.... .deb-Pakete wurden unterwegs leider nicht erzeugt.


    Edit:


    Eine Ergänzung noch: Im /tmp-Ordner sind mehrere log-Dateien vom Compile-Vorgang. Außer in der besagten logbuildCore.log sind in allen anderen keine Fehlermeldungen am Ende, mit Außnahme der logbuildQT4.log. Da steht am Ende:

    Code
    1. [ 48%] Linking CXX shared library libADM_UIQT46.so
    2. cd /home/mediapc/Programme/avidemux_2.7.1/buildQt4/ADM_UIsQt4/src && /usr/bin/cmake -E cmake_link_script CMakeFiles/ADM_UIQT46.dir/link.txt --verbose=1
    3. /usr/bin/c++ -fPIC -fmessage-length=0 -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -shared -Wl,-soname,libADM_UIQT46.so -o libADM_UIQT46.so CMakeFiles/ADM_UIQT46.dir/FAC_bar.cpp.o CMakeFiles/ADM_UIQT46.dir/FAC_frame.cpp.o CMakeFiles/ADM_UIQT46.dir/FAC_integer.cpp.o CMakeFiles/ADM_UIQT46.dir/FAC_aspectRatio.cpp.o CMakeFiles/ADM_UIQT46.dir/FAC_float.cpp.o CMakeFiles/ADM_UIQT46.dir/FAC_hex.cpp.o CMakeFiles/ADM_UIQT46.dir/FAC_readOnlyText.cpp.o CMakeFiles/ADM_UIQT46.dir/toolkit.cpp.o CMakeFiles/ADM_UIQT46.dir/FAC_matrix.cpp.o CMakeFiles/ADM_UIQT46.dir/DIA_none.cpp.o CMakeFiles/ADM_UIQT46.dir/moc_T_bitrate.cxx.o CMakeFiles/ADM_UIQT46.dir/moc_T_button.cxx.o CMakeFiles/ADM_UIQT46.dir/moc_T_dialogFactory.cxx.o CMakeFiles/ADM_UIQT46.dir/moc_T_filesel.cxx.o CMakeFiles/ADM_UIQT46.dir/moc_T_menu.cxx.o CMakeFiles/ADM_UIQT46.dir/moc_T_slider.cxx.o CMakeFiles/ADM_UIQT46.dir/moc_T_threadCount.cxx.o CMakeFiles/ADM_UIQT46.dir/moc_T_timeStamp.cxx.o CMakeFiles/ADM_UIQT46.dir/moc_T_toggle.cxx.o CMakeFiles/ADM_
    4. UIQT46.dir/moc_T_notch.cxx.o CMakeFiles/ADM_UIQT46.dir/__/include/moc_DIA_flyDialogQt4.cxx.o CMakeFiles/ADM_UIQT46.dir/T_bitrate.cpp.o CMakeFiles/ADM_UIQT46.dir/T_button.cpp.o CMakeFiles/ADM_UIQT46.dir/T_dialogFactory.cpp.o CMakeFiles/ADM_UIQT46.dir/T_filesel.cpp.o CMakeFiles/ADM_UIQT46.dir/T_menu.cpp.o CMakeFiles/ADM_UIQT46.dir/T_slider.cpp.o CMakeFiles/ADM_UIQT46.dir/T_threadCount.cpp.o CMakeFiles/ADM_UIQT46.dir/T_timeStamp.cpp.o CMakeFiles/ADM_UIQT46.dir/T_toggle.cpp.o CMakeFiles/ADM_UIQT46.dir/T_notch.cpp.o CMakeFiles/ADM_UIQT46.dir/DIA_flyDialog.cpp.o CMakeFiles/ADM_UIQT46.dir/T_QCanvas.cpp.o CMakeFiles/ADM_UIQT46.dir/T_qtFactory.cpp.o CMakeFiles/ADM_UIQT46.dir/T_RubberControl.cpp.o CMakeFiles/ADM_UIQT46.dir/T_QSlider.cpp.o CMakeFiles/ADM_UIQT46.dir/T_openGL.cpp.o -L/home/mediapc/Programme/avidemux_2.7.1/install/usr/lib -lGLU -lGL -lQtOpenGL -lQtGui -lQtCore -lADM_core6 -lADM_coreUI6 -lQtGui -lQtCore ../../commonQt4/ADM_render/libADM_render6_QT4.so -lADM_coreVideoFilter6 ../../ADM_openGL/src/libADM_
    5. openGLQT46.so -lGLU -lGL -lQtOpenGL -lADM_core6 -lADM_coreUI6 -lADM_coreImage6 -lADM_coreVDPAU6 -lQtGui -lQtCore -lADM_coreUtils6 -Wl,-rpath,/home/mediapc/Programme/avidemux_2.7.1/install/usr/lib:/home/mediapc/Programme/avidemux_2.7.1/buildQt4/commonQt4/ADM_render:/home/mediapc/Programme/avidemux_2.7.1/buildQt4/ADM_openGL/src:
    6. make[2]: Verzeichnis »/home/mediapc/Programme/avidemux_2.7.1/buildQt4« wird verlassen
    7. [ 48%] Built target ADM_UIQT46
    8. make[1]: Verzeichnis »/home/mediapc/Programme/avidemux_2.7.1/buildQt4« wird verlassen
    9. make: *** [all] Fehler 2
  • Keiner 'ne Idee woran es liegen könnte? Ist es vielleicht das immernoch "fehlende" SDL? Leider ist SDL sogar in zwei Versionen installiert. Auch verschiedene -dev-Pakete habe ich mal vorsichtshalber dazuinstalliert. Avidemux findet SDL leider immernoch nicht.

  • Häng mal die Logs komplett an, die interessanten Teile (Fehler 1) sind ja nicht drauf.


    Schmeiß mal die steinalten libvdpau-dev und libva-dev aus trusty wieder runter. Libva bringt dir dann ja eh erstmal nichts und für VDPAU probierst du mal aktuellere Header:

    Code
    1. mkdir /usr/include/vdpau
    2. wget https://cgit.freedesktop.org/vdpau/libvdpau/plain/include/vdpau/vdpau.h -O /usr/include/vdpau/vdpau.h
    3. wget https://cgit.freedesktop.org/vdpau/libvdpau/plain/include/vdpau/vdpau_x11.h -O /usr/include/vdpau/vdpau_x11.h
  • Ehe man an jeder Abhängigkeit hängt ...

    Code
    1. apt-get build-dep ffmpeg

    Ist doch ein Debian oder Ubuntu System?


    Den eigentlichen Fehler sehe ich nicht, aber es steht unten was mit "Qt4".

    Das lässt mich vermuten, dass es bei den grafischen Tools wie ffplay hängt.

    Das Bauen müsste man eigentlich irgendwie abschalten können und brauchen tust du sie für deinen Zwecke eh nicht.

    Gruss
    SHF


  • Zum Thema ist ja eigentlich schon alles gesagt. Will nur der Vollständigkeit halber noch anmerken:

    Der RPI kann hardware en/decodierung (wie schon geschrieben) von Haus aus. Der Codec zum Kaufen bezieht sich nur auf MPEG-2 und VC-1, weil das extra Lizenzgebühren kostet und die RPI-macher sich das gespart haben.


    Zum Stand von Hardwarebeschleunigung von ffmpeg (am Ende verwendet fast alles unter der Haube ffmpeg, z.B. auch Avidemux):

    https://trac.ffmpeg.org/wiki/HWAccelIntro


    Für h264 bringt es aber nicht "soo" viel:

    Will a graphics card make x264 encode faster?

    For x264 specifically, probably not. x264 supports OpenCL

    Für neue Projekte will man eigentlich h265 benutzen, das ist nur halt noch relativ langsam. Braucht dafür auch nur ~40% des Speicherplatzes von h264.

    https://trac.ffmpeg.org/wiki/Encode/H.265


    Für avidemux gibts auch fertige Pakete, du musst das nicht selbst kompilieren, wenn es da Probleme gibt:

    http://ubuntuhandbook.org/inde…2-7-0-ubuntu-17-10-18-04/

    (heißt avidemux2.6, ist aber 2.7)

  • Erstmal vielen Dank für die vielen guten Antworten.


    libav-dev und libvdpau-dev habe ich entfernt und neuere Header-Dateien wie vorgeschlagen mit wget runtergeladen. Beim Kompilieren kommt jetzt das:

    ...libva wird also nicht mehr gefunden.


    Dann die Sache mit ffmpeg:

    Code
    1. apt-get build-dep ffmpeg
    2. Paketlisten werden gelesen... Fertig
    3. Abhängigkeitsbaum wird aufgebaut.
    4. Statusinformationen werden eingelesen.... Fertig
    5. Als Quellpaket wird »libav« statt »ffmpeg« gewählt.
    6. Die folgenden Pakete haben unerfüllte Abhängigkeiten:
    7. libjack-dev : Hängt ab von: libjack0 (= 1:0.121.3+20120418git75e3e20b-2.1ubuntu1) soll aber nicht installiert werden
    8. E: Bauabhängigkeiten für ffmpeg konnten nicht erfüllt werden.

    ich verstehe leider nicht was der Befehl eigentlich macht. Wenn ich jedenfalls libjack0 installieren will, möchte mir Synaptics ganz viel entfernen, zum Beispiel den PSX-Emulator und diverse Sound-Programme. Deshalb geht das nicht.

    Laut Synaptics sind libav UND ffmpeg installiert. ffmpeg ist vmtl. in der alten Version, vor dem libav-release (die ffmpeg-Version lautet: 4:08.16-0ubuntu0.12.04.1).


    Ich glaube mein Hauptproblem ist, dass ich Ubuntu trusty drauf habe. Das ist also Version 14.04, die noch ein Jahr supported wird. Das von Okul verlinkte fertig-kompilierte Avidemux 2.74 ist aber für Ubuntu 17 und 18. Ein Ubuntu-Upgrade ist echt nicht drin. Das würde mir das sorgfältig zusammengestellte System zerschießen.


    So...jetzt sehe ich gerade: Der Avidemux-Compile-Vorgang ist durchgelaufen! Melde mich später nochmal.

  • Das neue Avidemux wird gestartet mit avidemux3_qt4 und hat in den Codec-Optionen jetzt zum ersten mal NVIDIA-Codecs gelistet. Also NVIDIA H264 und NVIDIA-HEVC. Der alte x264-Codec ist dafür verschwunden. Leider ist ein Encodieren in h264 nicht möglich. Es erscheint eine Fehlermeldung:


    "Video

    Kann Encoder nicht konfigurieren. Ist die Bitrate zu niedrig?"


    Hab ein bißchen an den Werten gedreht, keine Änderung des Problems.


    Außerdem muss ich noch erwähnen, dass nach der Installation von NVENC und den dev-Paketen VDPAU ald Decoder im Hauptfenster von Avidemux 2.6 erschien. Das ist jetzt in avidemux 2.7 wider weg. Da steht wieder "Lavcodec RGB".

  • Hi,

    Vdpau ist ja aus ffmpeg geflogen...

    Daher ist das logisch.

    Und nvdec bzw nvenc ist nur mit neuesten Karten supported, könnte ich mir vorstellen.

    Mfg Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • Vdpau ist ja aus ffmpeg geflogen...

    Ich habe bei ffmpeg 4.0 nur gesehen, dass die seit vielen Jahren als deprecated markierte alte VDPAU API rausgeflogen ist - VDPAU wird noch gelistet:

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)