This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

[HELP] Indexen und extrahieren beschleunigen?
#1
Hi,
bin gerade dabei ein paar 4K HDR Videos zu tonemappen und auf 1080p downzuscalen. Da die MKVs aber teilweise bis zu 80 GB+ groß sind und die auf meinem Medienserver liegen, dauert es dank 1Gbit LAN immer sehr lange bis das eigentliche Encoding/Filtering beginnt.
Im Grunde wird die Datei 3 mal komplett ausgelesen:
1) beim Dateimport werden die Untertitel extrahiert
2) beim Jobstart werden die Audios extrahiert und ggf. encodiert
3) bevor x264 das Encoding beginnt, vergeht ca. genauso viel Zeit. Ich tippe darauf dass es daran liegt dass die Datei erst indexiert wird (ffms2)

Wäre es vielleicht möglich die Subtitle und Audio Tracks aus einer Datei gleichzeitig zu extrahieren? Damit würde schonmal ein Drittel der "Vorbereitungsphase" wegfallen. Ich verstehe z.B. nicht wieso die Subs beim File Import extrahiert werden, die Audio Tracks aber erst wenn der Job gestartet wird. Auch wäre eine Option cool, die einem ermöglicht die ffindex Datei abzuspeichern, da man so nicht jedes Mal neu indexieren muss wenn man z.B. Encoding Tests durchführt.
Wäre es vielleicht möglich eine Option einzuführen die dafür sorgt dass beim Dateimport diese temp files generiert werden? Also ich setze manuell einen temp/output path, sobald ich eine Datei in Hybrid importiere werden Subs & Audios mit mkvextract in einem Durchgang extrahiert, und als Letztes nochmal das Video indexiert und als .ffindex abgespeichert - damit landen dann Subs, Audio & Index Files im Temp oder Output Ordner, je nachdem.

Das würde mir nämlich zusätzlich ermöglichen Hybrid auf dem Medienserver PC zu installieren, dort die ganzen MKVs zu importieren und die temp Files generieren, aber das eigentliche Encoding/Filtering auf meinem Main PC stattfinden. Hat den Vorteil, dass man nicht auf die mickrigen 1Gbit angewiesen ist und man die Files direkt von der Festplatte analysieren kann. Bei der Menge und Größe an Files ist es mir leider nicht möglich diese auf den Main PC zu kopieren. Einziger Workaround zurzeit ist dass Hybrid nur das Video benutzt, ohne Subs oder Audios, und dann danach mit mkvmerge zusammengeführt wird - ist aber sehr umständlich gerade wenn man batch Projekte hat.

Das ist jetzt vielleicht ein bisschen viel "verlangt", aber ich wäre dir auch sehr dankbar wenn du einfach mkvextract so implementieren kannst, dass die Extraktion von Subs & Audios in einem Durchgang erfolgen (am besten beim Import der Dateien in Hybrid), da die jetzige Art und Weise eher ineffizient ist. Selbst wenn man "Ignore Audio" benutzt, wird ja trotzdem die ganze File analysiert wenn man die Subs möchte.


Ist jetzt warscheinlich nichts was oft requested wurde, aber wäre dennoch eine tolle QoL change für Hybrid! Denn gerade wenn es um große Dateien geht, dauert es leider immer sehr lange bis das eigentliche Filtern/Encoding stattfindet.. Würde mich sehr über eine Antwort freuen und wünsche dir noch einen schönen Abend :) 

LG
Reply
#2
Kurz: Nein. Smile

Lang:
Untertitel werden am Anfang extrahiert, da man sie eventuell extern bearbeiten will.

Hatte über eine Option die Audiostreams vor der Jobbearbeitung zu extrahieren hatte ich schon mal darüber nachgedacht.
Mit ffmpeg kann man dies an sich auch machen, sofern die Untertitel und Audiostreams von FFmpeg unterstützt werden. (leider nicht alle)
Problem ist, dass das Extrahieren von Audio-&Untertiteldateien ewig dauert, wenn es kombiniert wird und dann das Laden der Dateien ewig dauert.
Indexdateien werden eigentlich nur ein mal angelegt und nicht wieder, es sei denn, der temporäre Pfad ändert sich, oder Hybrid wird geschlossen.
Da ich Medien, die ich verarbeite, immer lokal anspreche (was immer noch 'langsam' ist), betrifft es mich kaum. Auch stört es die meisten Leute eher, wenn das Einlesen der Dateien lange dauert.
Sorry, das wird erst mal so bleiben, wie es ist.

Außer dass man "Jobs->Queue->Parallel subjob processing" aktiviert kann man da nicht viel machen.

Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Reply
#3
(07.05.2024, 04:56)Selur Wrote: Problem ist, dass das Extrahieren von Audio-&Untertiteldateien ewig dauert, wenn es kombiniert wird und dann das Laden der Dateien ewig dauert.
Auch stört es die meisten Leute eher, wenn das Einlesen der Dateien lange dauert.
Will jetzt nicht weiter quengeln da ich deine Antwort so akzeptiere, aber es sind trotzdem noch einige Fragen offen.

Wenn der Haken in Hybrid gesetzt wird dass die Untertitel durchgeschleift werden, wird ja beim Import die ganze Datei ausgelesen und so die Subs extrahiert. Hab ich da grad nen Denkfehler oder macht Hybrid das irgendwie schneller (im Sinne von es wird nicht die ganze Datei ausgelesen) weil mkvextract macht das ja genauso. Und wenn Hybrid zusätzlich die Audios beim Import extrahieren würde, macht das ja keinen Unterschied von der Geschwindigkeit her da die Datei so oder so einmal komplett ausgelesen wird und daraus dann eben Subs+Audio extrahiert werden in einem Rutsch. Deswegen macht die Aussage für mich irgendwie keinen Sinn weil wer Subs will muss ja trotzdem am Anfang beim Import warten (zugegeben, es mag Leute geben die sich nicht für Subs interessieren).
Einzig was ich noch vorschlagen würde wäre eine Option die Subs erst beim Jobstart zu extrahieren (und das dann gleichzeitig mit den Audios), oder eben die Audios am Anfang. Muss ja nicht das Default setting sein aber ein simpler Haken in den Optionen wäre schon nice, damit würde es auch nicht die Leute stören die nicht warten wollen.

Im Endeffekt ist das Ganze eh nichts weltbewegendes, entweder man wartet halt oder man ignoriert Audio + Subs und muxt das am Ende dann selber alles zusammen. Ist zwar etwas umständlich aber was solls. Wäre eben ne coole QoL change aber ich versteh schon dass es warscheinlich wichtigere Sachen gibt um die dich kümmern musst. Aber trotzdem vielen Dank für deine Mühen, Hybrid ist echt ein Segen!
Reply
#4
Ob die komplette Datei eingelesen werden muss beim Extrahieren der Untertitel, hängt von Container ab (wie das Packaging des Containers funktioniert).
Die eigentliche Idee ist, dass vor der Jobabarbeitung möglichst wenig mit der Quelldatei gemacht werden muss.
(Bei potenziellem vfr Input müssen leider alle time codes, um zu entscheiden, ob diese okay sind oder vielleicht gar nicht vfr anzeigen,...)

Zur Historie, wie es überhaupt dazu kommt, dass die Untertitel initial extrahiert werden:
Hybrid hatte initial gar keinen Untertitelsupport. (vor allem, weil 99 % der Dateien, mit denen ich arbeite, keine Untertitel haben)
(Nebenbei: die Größe von Untertiteldateien ist quasi nicht abschätzbar, sprich für 2pass Encoding bei dem man eine bestimmte Dateigröße anstrebt, müssen sie vorher extrahiert werden. Idealerweise vor der Joberstellung die Größe der Untertiteldateien bekannt sein, da man besonders bei sehr kleinen Zielgrößen sonst in Probleme laufen kann.)
Danach kam dann die Feature-Anfragen:
  • Können externe Untertitel hinzugefügt werden? (habe ich damals hinzugefügt)
  • Können Untertitel extrahiert werden? (habe ich damals hinzugefügt)
  • Können die Untertitel durchgereicht werden? (habe ich damals hinzugefügt)
  • Können nur bestimmte Untertitel verarbeitet werden? (habe ich damals hinzugefügt)
  • Können die Untertitel konvertiert werden? (srt->ttxt,...; habe ich, sofern es kein ocr benötigt und einfach machbar ist gemacht)
  • Können die Untertitelextraktion auch automatisch beim Einlesen der Datei machen, sodass man, wenn man Untertitel nicht extern z.B. mit ocr bearbeiten will, diese automatisch in die 'Subtitle Queue' hineinwerfen kann und das nicht manuell machen muss? (habe ich damals hinzugefügt)

----

Was Du willst, sind zwei Optionen:
1. eine Option, die analog zur Extrahierung von Untertitel erlaubt Audiostreams zu extrahieren.
2. eine Option, die erlaubt Untertitel und Audiostreams gleichzeitig zu extrahieren.
Die beiden Optionen sind eigentlich nur interessant, wenn man große Dateien von nicht dafür ausgelegten Medien verarbeiten will.
Bei professioneller Videobearbeitung hat man i.d.R. entweder die Platten per SCSI oder mit mindestens 10GBit dergleichen angeschlossen, wenn man große Dateien über das Netzwerk verarbeiten will. Einige NLEs haben früher auch die Daten zur Bearbeitung in ein lokales Laufwerk kopiert.

Ich plane nicht vor das eine oder andere zu Implementieren, da ich nicht sehe, dass der Nutzen meinen Zeitaufwand irgendwie rechtfertigt.
(vor allem das Debuggen&Co)


Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)