Transkodieren

Smalltalk
Antworten
Benutzeravatar
Draal
Beiträge: 544
Registriert: 11.03.2005 14:45:26

Transkodieren

Beitrag von Draal » 10.03.2024 19:04:41

Hallo zusammen,

derzeit transkodiert mein NAS ein h265 mkv in ein h264 mp4 per ffmpeg um. Das Ganze wurde in einer screen Session gestartet und dauert ungewöhnlich lange. Hintergrund ist, dass mein Medienplayer keine h265 dekodieren kann. Das Gerät ist jetzt schon seit fast 24 Stunden am werkeln. Derzeit steht es, bei etwas über 8 GB input und etwas über 2 GB output. Die CPU Last liegt bei knapp 90%. Wenn ich in die screen Session einsteige, steht unten ein Wert 2 Stunden und 4 Minuten.
CPU:

Code: Alles auswählen

~$ lscpu
Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         48 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  1
  On-line CPU(s) list:   0
Vendor ID:               AuthenticAMD
  Model name:            AMD Sempron(tm) 145 Processor
Ist so ein Umfang zu erwarten gewesen?

niemand
Beiträge: 502
Registriert: 22.12.2023 16:35:53
Kontaktdaten:

Re: Transkodieren

Beitrag von niemand » 10.03.2024 19:16:45

Draal hat geschrieben: ↑ zum Beitrag ↑
10.03.2024 19:04:41
Ist so ein Umfang zu erwarten gewesen?
Ja. ffmpeg sollte dir auch die aktuelle Framerate anzeigen; wenn du schaust, wieviele fps dein Video hat und wie lang es ist, kannst du damit in etwa abschätzen, wie lange es dauert.
„I fought in the Vim-Emacs-War.“ Quelle

Benutzeravatar
Draal
Beiträge: 544
Registriert: 11.03.2005 14:45:26

Re: Transkodieren

Beitrag von Draal » 10.03.2024 20:50:34

:THX:

Benutzeravatar
Draal
Beiträge: 544
Registriert: 11.03.2005 14:45:26

Re: Transkodieren

Beitrag von Draal » 11.03.2024 18:51:03

Ich mach das nicht oft, aber wenn man halt nur ein h265 bekommt.
Tja, die etwas uber 24 Stunden haben ein gutes Ergebnis gebracht. Die Qualitätsverluste sind nur rudimentär.

Code: Alles auswählen

8378788530  8. Sep 2021  'Once Upon A Time In Hollywood.mkv'
2930270652 11. Mär 00:07 'Once Upun A Time in Hollywood FHD.mp4'

wanne
Moderator
Beiträge: 7465
Registriert: 24.05.2010 12:39:42

Re: Transkodieren

Beitrag von wanne » 13.03.2024 14:38:47

Das ist ein 15 Jahre alter Prozessor! Nach moors law bist du beim Faktor 1024 für heutige Prozessoren. Ganz kommst du da eventuell nicht dran. Aber mein 80€-Motorola encodiert FullHD-h.264 etwa mit 4 facher Abspielgeschwindigkeit. Also ein 80min Film in 20min. Und das braucht <5W statt der >100W, die dein Prozessor braucht. Klar die Stromkosten für die 26h werden nicht mal einen Euro aus machen und ich will auch nicht empfehlen auf einem Handy zu encodieren.
Aber wenn du das öfter machst würde ich mir ernsthaft überlegen irgend wo ein Gerät zu suchen, dass Hardware AVC kann. Grafikkarten selbst aus der Zeit sollten das können. Selbst interne. Das ist zwar einmalig etwas aufwändig, wie man dem ffmpeg für die einzelne Karte beibringt und insbesondere etwas ältere Hardware encoder kommen nicht an die Dateigrößen x264 veryslow dran, aber wenn das ein NAS ist, wirst du dich da auch nicht so sehr für interessieren. Und ich wette, dass machst du auch nicht.
Kannst du mal das volle ffmpeg Kommando posten? Willst du eventuell ein -preset veryfast (größere Dateien für deutlich größere Enkodiergeschwindigeiten.) vor dem output einfügen.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
Draal
Beiträge: 544
Registriert: 11.03.2005 14:45:26

Re: Transkodieren

Beitrag von Draal » 13.03.2024 14:57:36

Das Board liefert der CPU maximal 95 Watt. Das sind eher Athlons gewesen. Diese Celeron soll nur 45 Watt nehmen, ich kann mich aber auch täuschen.
Ich mach das eher selten. Nächstesmal lass ich es mal aus Neugierde meinen Quadcore laufen. Der Befehl war ohne weitere Parameter. Wie gesagt, Input kam von einer h265.

Code: Alles auswählen

ffmpeg -i 'Once Upon A Time In Hollywood.mkv' -vcodec libx264 'Once Upun A Time in Hollywood FHD.mp4'
.

wanne
Moderator
Beiträge: 7465
Registriert: 24.05.2010 12:39:42

Re: Transkodieren

Beitrag von wanne » 13.03.2024 15:38:31

Draal hat geschrieben: ↑ zum Beitrag ↑
13.03.2024 14:57:36
Das Board liefert der CPU maximal 95 Watt. Ja und laut speck frisst er 60W.
Aber du hast du nochmal DDR3-RAM Riegel, die vermutlich ~5W fressen. Platten, die laufen, Lüfter, ein Netzteil, dass nicht 100% Effizienz hat. Schnall doch mal ein Strommessegerät an die Steckdose: Ich wette du kommst in etwa auf 100W.
Ich mach das eher selten. Nächstesmal lass ich es mal aus Neugierde meinen Quadcore laufen.
Relevant für die Effizienz ist in erster Linie die Strukturbreite also das Baujahr und wie gesagt: Für solche Unternehmen sind GPUs King. Die sind ursprünglich genau für den Zweck entwickelt worden. Du wirst garantiert irgend wo irgend ein Gerät mit Bildschirm rum stehen haben.

Code: Alles auswählen

ffmpeg -i 'Once Upon A Time In Hollywood.mkv' -vcodec libx264 'Once Upun A Time in Hollywood FHD.mp4'
.
Wie gesagt: In deinem Szenario würde ich eher ein -preset veryfast nehmen, da ich annehme, dass du rotierende Platten hast und dich Speicherplatz deswegen eher egal ist. Audio würde ich einfach kopieren, statt es neu zu encodieren. Und die Qualität etwas hoch schrauben:

Code: Alles auswählen

ffmpeg -i 'Once Upon A Time In Hollywood.mkv' -c:v libx264 -preset veryfast -crf 21 -c:a copy output.mkv
Daneben habe ich die alte -vcodec schreibweise durch -c:v ersetzt. Macht das selbe ist aber einheitlicher.
Weitestgehend von da geklaut: https://trac.ffmpeg.org/wiki/Encode/H.264
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
Draal
Beiträge: 544
Registriert: 11.03.2005 14:45:26

Re: Transkodieren

Beitrag von Draal » 13.03.2024 20:01:04

:THX:

Danke zunächst einmal für den Hinweis und den hervorragenden Link. Ich hab das vor Jahren schon ein paarmal gemacht, fand aber die Kommandozeile nicht mehr und ich glaube mich an -preset veryfast entsinnen zu können. Damals war mein NAS auch schneller fertig. Ich hab x265 in x264 umgewandelt, ohne allerdings den Container zu wechseln. Die Ergebnisse waren allerdings auch nicht so gut (Dateigröße und Qualität). Allerdings war die alte Hardware schneller damit fertig, als Windows auf einer moderneren Maschine. Damals lief im NAS noch eine ATI Mach II Rage 4 von 1998. :roll: Die ist mittlerweile abgeraucht und ich nutze jetzt die onboard Grafik:

Code: Alles auswählen

VGA compatible controller: NVIDIA Corporation C61 [GeForce 7025 / nForce 630a] (rev a2)
Ich weiß, eigentlich bräuchte ich es beim NAS nicht, aber da hängt immer noch ein Notfallmonitor dran. :roll:
Allerdings ist alles, was ich ich wohl auf dem NAS, bezüglich Grafik, laufen habe, MESA.

Jetzt bin ich am überlegen das Transcodieren auf meine Workstation zu verlagern:
Auszug inxi -F

Code: Alles auswählen

CPU:
  Info: quad core model: AMD FX-4300 bits: 64 type: MT MCP cache: L2: 4 MiB
  Speed (MHz): avg: 1403 min/max: 1400/3800 cores: 1: 1406 2: 1400 3: 1406
    4: 1400
Graphics:
  Device-1: AMD Bonaire XT [Radeon HD 7790/8770 / R7 360 R9 260/360 OEM]
    driver: radeon v: kernel
  Device-2: Logitech Webcam C270 driver: snd-usb-audio,uvcvideo type: USB
  Display: wayland server: X.Org v: 23.2.4 with: Xwayland v: 23.2.4
    compositor: kwin_wayland driver: X: loaded: radeon
    unloaded: fbdev,modesetting,vesa dri: radeonsi gpu: radeon
    resolution: 1920x1080~60Hz
  API: EGL v: 1.5 drivers: kms_swrast,radeonsi,swrast
    platforms: gbm,wayland,x11,surfaceless,device
  API: OpenGL v: 4.5 vendor: amd mesa v: 23.3.5-1 renderer: BONAIRE
    (radeonsi LLVM 17.0.6 DRM 2.50 6.6.15-amd64)
Da werd ich mich wohl erst mal reinfummeln müssen. :lol:

Kalt11
Beiträge: 1
Registriert: 13.03.2024 19:58:39

Re: Transkodieren

Beitrag von Kalt11 » 13.03.2024 20:14:47

Hallo

Benutzeravatar
Draal
Beiträge: 544
Registriert: 11.03.2005 14:45:26

Re: Transkodieren

Beitrag von Draal » 13.03.2024 20:47:26

Kalt11 hat geschrieben: ↑ zum Beitrag ↑
13.03.2024 20:14:47
Hallo
Ja, hallo auch! :lol:

wanne
Moderator
Beiträge: 7465
Registriert: 24.05.2010 12:39:42

Re: Transkodieren

Beitrag von wanne » 14.03.2024 03:32:11

ohne allerdings den Container zu wechseln
Container wechseln geht üblicher weise so schnell, wie die Platte schreiben kann. Das ist nicht dein limitierender Faktor. Kannst ja mal -c copy angeben. Dann lässt er den codec beim alten und wechselt nur den Container.
Allerdings ist alles, was ich ich wohl auf dem NAS, bezüglich Grafik, laufen habe, MESA.
Was anderes Läuft auch nicht mehr. Der Support für die Karten der 00er ist eher bescheiden.
GeForce 7025
Ich habe zuerst gedacht, dass du damit richtig pech gehabt hast. Nvidia unterstützt h.264 seit der Tesla (8XXX-Serie) die im gleichen Jahr raus kam. Aber das war decoding. encoding hat Nvidia erst 6 Jahre später mit Kepler 2012 gelernt. Intels onboard karten waren minimal schneller. Konnten das schon ab Sandy Bridge (2010). Aber 1998 ist auch da definitiv zu alt. Hast du irgend welche Hardware, die wenigstens aus dem letzten Jahrzehnt stammt?
AMD Bonaire XT [Radeon HD 7790/8770 / R7 360 R9 260/360 OEM]
Haha: Die erste die laut AMD h.264 encoding kann! Hab leider keine Ahnung, wie man auf so alten AMDs encodiert. Aber zumindest der Freie Treiber schreibt mal, dass er das kann. (Wenn ich das richtig verstehe nutzt du den auch. Sonst würde inxi fglrx sagen?)
Meine AMD ist ein bisschen zickig, wenn sie nicht selbst decoden darf. (Deine Karte kann sicher kein h.265)
Hab mir da den Link in die Lesezeichen gesetzt: https://devicetests.com/amd-radeon-gpu- ... conversion
Müsste dann irgend wie so aussehen:

Code: Alles auswählen

ffmpeg -t 200 -i ~/le.mp4 -vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' -qp 23 -rc_mode CQP -c:v h264_vaapi output.mp4
Eventuell willst du irgend wie -profile:v main und -quality 30 anhängen, damit es schneller encodiert. Bei meinen Experimenten bringt das aber genau gar nichts.
Im Allgemeinen sind die AMDs gefühlt deutlich langsamer als selbst deutlich leistungsschwächere Kollegen von Nvidia oder Intel. Dafür bleibt der Lüfter leise.
rot: Moderator wanne spricht, default: User wanne spricht.

MaGe
Beiträge: 1717
Registriert: 01.06.2014 17:12:16

Re: Transkodieren

Beitrag von MaGe » 14.03.2024 10:58:39

wanne hat geschrieben: Müsste dann irgend wie so aussehen:
Deine Einstellungen.

Code: Alles auswählen

 [...] format=nv12,hwupload [...] 
Warum nv12, gibt es einen bestimmten Grund?
Die Frage, hatte ich hier schon mal gestellt.

viewtopic.php?t=187721#p1356500



gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

wanne
Moderator
Beiträge: 7465
Registriert: 24.05.2010 12:39:42

Re: Transkodieren

Beitrag von wanne » 14.03.2024 14:31:55

MaGe hat geschrieben: ↑ zum Beitrag ↑
14.03.2024 10:58:39
Warum nv12, gibt es einen bestimmten Grund?
Ohne tut bei mir nicht. Ich habe keine Ahnung warum.
Ist defakto ein yuv420p in anderer Anordnung. Entsprechend nehme ich mal an, dass das umcodieren nicht teuer ist. Nutze ich yuv420p, dass heute defakto überall drin ist, was kein HDR ist, stürzt ffmpeg damit ab:

Code: Alles auswählen

Error initializing filter 'format' with args 'hwupload'
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
Da es das format ist, dass wohl auch DirectX nutzt kann ich mir vorstellen, dass Grafikkarten oder Treiber das im eventuell besser supporten.
Ausspucken tut er ja wieder yuv420p.
Hier die byte Anordnungen links yuv420p ist ffmpeg-sprech für I420 (oben links).
https://raw.githubusercontent.com/gist/ ... ormats.png
rot: Moderator wanne spricht, default: User wanne spricht.

MaGe
Beiträge: 1717
Registriert: 01.06.2014 17:12:16

Re: Transkodieren

Beitrag von MaGe » 14.03.2024 17:34:59

wanne hat geschrieben: Ohne tut bei mir nicht. Ich habe keine Ahnung warum.
Danke für die Rückmeldung :THX:



gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

Benutzeravatar
Draal
Beiträge: 544
Registriert: 11.03.2005 14:45:26

Re: Transkodieren

Beitrag von Draal » 14.03.2024 21:55:07

Jetzt hab ich das mal auf meinem Desktop veranstaltet, allerdings ohne Grafikkarten Unterstützung. Ich habs halt verpeilt die Hardware in ffmpeg zu initialisieren. :roll:

Code: Alles auswählen

ffmpeg -i unfired-pearlharbor-x265.mkv -c:v libx264 -preset veryfast -crf 21 -c:a copy 'Pearl Harbor FHD.mp4'

Code: Alles auswählen

8601946195 14. Mär 19:16  unfired-pearlharbor-x265.mkv
6665820296 14. Mär 21:33 'Pearl Harbor FHD.mp4'
Das Ergebnis wurde in knapp 2 Stunden erstellt und die Qualität ist nicht schlecht, obwohl HEVC ja eigentlich besser komprimiert sein soll.

wanne
Moderator
Beiträge: 7465
Registriert: 24.05.2010 12:39:42

Re: Transkodieren

Beitrag von wanne » 15.03.2024 03:27:14

Ich habs halt verpeilt die Hardware in ffmpeg zu initialisieren.
Ja irgend wie ist Hardwareunterstüzung immer Schmerz. Aber wenn man es ein mal hin bekommen hat kann mans wieder verwenden...
obwohl HEVC ja eigentlich besser komprimiert sein soll.
Ja. Der x264 holt verdammt viel aus dem alten Codec raus. Aber mittlerweile sind auch vile kommerzielle nachgezogen. Wie ist denn die Dateigröße im Vergleich?
rot: Moderator wanne spricht, default: User wanne spricht.

Antworten