Hybrid: Input -> x264/x265/Xvid/VP8/VP9/AV1

  • Neue Frage :)

    gibt's ne Funktion um alle Jobs/Dateien in der Warteschlange in eine Datei auszugeben (praktisch ein join)?
    Wenn nicht, würde ich das als neues Feature vorschlagen :)

  • Zitat

    Was machst Du denn, dass so etwas Sinn macht?


    Ich habe zum Teil kleine Schnispel und möchte die beim Kodieren dann zu einem ganzen zusammenfügen.

  • Okay, aber wie gesagt, wird wohl nicht in absehbarer Zeit kommen, einfach zu viel Aufwand + momentan auch eine Wissenslücke: Hab mal drüber nach gedacht und ich weiß schon nicht wie ich die Kompatibilität von H.264 Streams ermitteln könnte ohne jeden von ihnen per MediaInfo zu analysieren und darauf zu checken, dass sie mit x264 encoded wurden und die exakt gleichen Parameter habe. :/

    Das ist auch eines meiner wesentlichen Probleme beim Schreiben eines mkvCutters, ich hab keine Ahnung wie ich einen zu Stream X kompatiblen Stream Y erzeugen kann.

  • Ich kenn mich da nicht aus, aber ich meine das so, dass die Dateien vor der Umwandlung zusammengefügt werden (hier wird wohl das Problem sein, für jedes der x Formate das entsprechend zu erzeugen?) und dann wird dieses temporäre File mit den Einstellungen ganz normal umgewandelt.

  • Zitat

    die Dateien vor der Umwandlung zusammengefügt werden (hier wird wohl das Problem sein, für jedes der x Formate das entsprechend zu erzeugen?)


    Da gäbe es mehrere Ansätze:

    • die Dateien wirklich physisch zusammenfügen:
      Da müsste irgendwie gecheckt werden, ob die Dateien wirklich mit einander kompatibel sind.
      Farbformat, Auflösung und Frame rate sind nicht das Problem, aber leider keine Ahnung wie man ermitteln kann ob Datei X1 und Datei X2 welche beide mit Videoformat V1 erstellt wurde kompatibel sind.
      Hab z.B. schon öfter mal versucht zwei mkvs zusammengefügt und dann später bei der Wiedergabe des zusammengefügten Files festgestellt, dass nur Teil 1 richtig abgespielt wird.
    • Die Dateien alle mit Avisynth laden, Decodieren, auf ein Farbformat und eine Auflösung bringen. Ist vermutlich der erfolgversprechendste Ansatz. Hat aber das Problem, dass da Avisynth schnell in Speicherprobleme oder in Einschränkungen der SourceFilter läuft. (Nicht jeder Sourcefilter kann beliebig oft geladen werden.)
    • Die Dateien mit mencoder/ffmpeg decodieren und dann beim Decodieren zusammen fügen. -> ist auch nicht so einfach und bietet ebenfalls so seine Tücken.
    • Es Dateien einzeln in ein verlustfreies Format überführen, welches man einfach zusammen fügen kann. (so gehen die meisten NLE Tools vor; Problem riesige temporäre Dateien)


    richtig 'Unterhaltsam' wird es dann vor allem wenn die Quellen am Ende noch vfr haben (oder Untertitel haben oder unterschiedliche AV delays aufweisen, in verschiedenen Containern stecken,....).

    Am einfachsten wäre es wohl man würde anstatt 'Input File' irgendwas à la 'Open merge' starten, welches dann ein eigenes Tool startet, mit dem man eine zusammengefügte Inputdatei erstellt, welche dann anschließend an Hybrid gefüttert wird, so müsste man in Hybrid dann auch nicht alle möglichen AutoRoutinen zur Analyse, Joberstellung usw. umschreiben. (alternativ merged man die Dateien einfach mit einem ganz anderem Tool bevor man sie an Hybrid füttert)

    --------------

    Hab schon einige Male über eventuelle Merge-Operationen nachgedacht, aber bis dato ist mir noch keine gute und robuste Methode eingefallen, die nicht voraussetzt einige tausend Zeilen Code zu schreiben und einiges an Schreib- und Denkaufwand erfordert.

    Cu Selur

  • Zitat

    richtig 'Unterhaltsam' wird es dann vor allem wenn die Quellen am Ende noch vfr haben (oder Untertitel haben oder unterschiedliche AV delays aufweisen, in verschiedenen Containern stecken,....).

    "Unterhaltsam"...ja in Bezug auf "vfr und AV-Delays"
    In versch.Kontainer dagegen weniger.
    Procoder und da auf "Stitch" klicken.
    Alles frisst aber auch der nicht.

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • "Alles frisst aber auch der nicht. " und da kommen dann die verschiedenen Container in Spiel, so haben Transportstreams z.B. teilweise sehr merkwürdige Delaywerte, mov Dateien können flags zum Croppen und rotieren haben, mkvs können gestreched sein usw.
    Procoder macht dann vermutlich den Umweg über DirectShow (ffdshow&Haalis Media Splitter), oder schränkt einfach die Formate die es unterstützt enorm ein. + Procoder wird das mergen auch nur mit Reencoding aller Quellen machen, auch wenn manches z.B. schon kompatibel wären. ;)
    Naja, ist auch egal. Worum es mir eigentlich nur ging, war aufzuzeigen, dass es sich dabei nicht gerade um ein 'einfaches und kleines'-Feature handelt und das ich da schon einige Probleme sehe und sich vermutlich noch mehr existieren.

    Cu Selur

  • Habe festgestellt, dass der Fortschritt irgendwie nicht mehr stimmt, der läuft bis 99% bei 1st & 2nd pass und bleibt da dann ewig bei stehen, unabhängig von der Quelle.
    Weiß nicht was dir da für Infos weiterhelfen?

  • Also ein paar generelle Infos wäre n schon hilfreich, da bei mir die Fortschrittsanzeige passt.
    Sie passt i.d.R. eigentlich nur nicht, wenn Hybrid aus irgendeinem Grund die Anzahl der zu encodierenden Frames/Länge/Framerate des Clips falsch ermittelt.
    -> ohne entsprechenden DebugOutput und idealerweise ein kleines Sample kann ich da wenig sagen.

    Cu Selur

  • Hybrid rev. 2013.01.22.1
    *fixed*

    • avisynth: added some additional ConvertToYv12 to handle non-Yv12 input
    • avisynth: delete .log files created by DGIndex and DGindexNV
    • decode: removed ffmpegs 'splicify' filter since it got removed November 2012 (totally missed that)
    • extract: when cut&extract are used on mp4 files, ffmpeg needs to be used
    • mux: crash when 'Adjust to stream frame rate' was enabled before loading a source
    • output: mp4 + iTunes, muxing was wrong when for square pixel par
    • output: vp6/8 to mkv, stream will now be extracted using ffmpeg and first put inside an .avi container (otherwise mkvmerge can't handle them properly


    *changed*

    • analyse: if mediainfo does not report length and frame count, try to get length from audio info (provided by mplayer) and calculate frame count using frame count if present
    • analyse: mplayer - switched '-identify' to '-msglevel identify=6'
    • cosmetics: Video SpeedUp renamed to Stretch, since it deals with the mkv stretch value
    • cosmetics: added a bunch of icons for buttons
    • input: output info if stream and container frame rate do not match
    • output: do not create jobs if output container is mp4, iTunes compatibility is enabled and the output content is interlaced (seems like iTunes&co do not support interlaced content)
    • x264: set input lookahead to zero of b-frames is zero and 'minimize input lookahead' is enabled. Didn't cause any problems since with b-frames disabled sync-lookahead should not be used.


    *added*

    • analyse: option to disable that Hybrid will ignore all audio of a source if mplayer reports "no sound" or "No audio stream found" for that source
    • avisynth: added option to disable MT
    • avisynth: 'resize before filtering'-option
    • avisynth: 'denoise before restore'-option
    • avisynth: avisynth: DGDecNV support (you need to copy your DGDecodeNV Files (DGIndexNV.exe, DGDecodeNV.dll, NV12ToRGB24_sm_10.cubin, NV12ToRGB24_sm_20.cubin, NV12ToRGB24_sm_30.cubin and the license.txt) into the avisynthPlugins folder (from the avisynthExtension) for it to work (and you need a CUDA graphic capable card).
    • x264: option to overwrite '--lookahead-threads'
    • subs: simplistic initial support for BDSup2Sub++ which can be used for Blu-ray .sup to .idx/.sub conversion

    -> downloads: http://www.selur.de/downloads

    Cu Selur

  • Ich hatte jetzt Gelegenheit, die aktuelle Version in einem 64bit Debian Wheezy System zu testen, was aber nicht ging, weil Hybrid auf GLIBC 2.14 besteht, aber die standardgemäße Version unter Wheezy gerade mal 2.13 ist. Gibt es vielleicht die Möglichkeit, Hybrid so zu bauen, daß es auch mit der älteren Libc-Version läuft?

  • baue:
    - die binary unter Ubuntu 12.04 (glibc 2.15)
    - die binary_qt46 unter Ubuntu 32bit 10.04 (glibc 2.11)
    - die 64bit_binary_qt46 unter Ubuntu 64bit 10.04 (glibc 2.11)
    - die 64bit_binary unter Lubuntu 64bit 12.04 (glibc 2.15)

    -> mal die 64bit_binary_qt46 Version versucht? (sollte eigentlich keinerlei Funktionseinbußen geben, erst wenn ich < 4.0 gehen würde sollte sich wirklich etwas ändern)

  • Hallo Selur,
    hatte heute seit längerem mal wieder Zeit mit Deinem Programm zu spielen. Dabei ist mir aufgefallen, daß beim Muxen (MKV) die Audio-Streams nicht bzw. nicht korrekt getaggt werden. Trozt Aktivierung und korrekter Belegung von Title und Language bleibt der Trackname leer und die Sprache unbekannt. Bei den Untertiteln funktionierts wie es soll. Außerdem wir immer ein "globaler Tag" erstellt, egal ob angehakt oder nicht.
    Gruß

  • Ich kodiere nur den Videostream, Audio und subtitle habe ich meist im passenden format vorliegen. Meine Einstellung ist also für "Audio" Custom. Dann füge ich die entsprechenden DTS oder AC3-Dateien im Auio-Tab bei deaktiviertem "reencode" ein. Im Tagging-Tab werden sie dann ausgewählt, benannt und zugefügt.

  • Zitat

    Im Tagging-Tab werden sie dann ausgewählt, benannt und zugefügt.


    Habe gerade genau das gemacht und bei mir wir der Title und die Sprache bei de Audiostream übernommen:

    Zitat

    mkvmerge --ui-language en -o "H:\Output\test_Title_1.mkv" --global-tags "H:\Temp\test_Title_1_12_02_56_5310_06.tag.xml" -d 0 --default-track 0:yes --aspect-ratio-factor 0:1/1 --fourcc 0:MP4V --no-chapters --forced-track 0:yes --no-audio --no-subtitles "H:\Temp\12_02_56_5310_03.264" --track-name 0:"CustomTitle" --language 0:wo --default-track 0:yes --forced-track 0:no -a 0 --no-video --no-subtitles --no-chapters "H:\Temp\iId_1_aid_1_12_02_56_5310_01.mp3"


    -> hast Du eventuell den Titel nur eingestellt und das hinzufügen zur TagQueue vergessen?
    Falls nicht, erstelle doch bitte einen DebugOutput. (siehe: http://www.selur.de/support)

    Zitat

    Außerdem wir immer ein "globaler Tag" erstellt, egal ob angehakt oder nicht.


    Ja, Hybrid erstellt immer einen globalen Tag bei dem 'Encoding Gui' auf die aktuelle Hybrid Version gesetzt wird (z.b. "Hybrid 2013.01.26.1"), wenn man eine mkv Datei mit Hybrid erstellt.
    Das ist so gewollt. Sehe nichts was dagegen spricht, da es ein nicht offizieller Tag ist, welcher von Stand Alone Playern ignoriert werden sollte.

    Cu Selur

  • Hab das Debug-File angehängt

    Zitat

    hast Du eventuell den Titel nur eingestellt und das hinzufügen zur TagQueue vergessen?


    nein, ganz sicher nicht. Das Feature hat in Vorgägnerversionen schon funktioniert

    Ansonsten ist mir noch eine Fehlermeldung im Log aufgefallen. (X264 [error]: can't parse qpfile for frame 0)
    Somit werden wohl die I-Frames nicht korrekt an den Chapter-Sprungmarken gesetzt?

  • Zitat

    Das Feature hat in Vorgägnerversionen schon funktioniert


    tut es bei mir immer noch :)

    Zitat

    (X264 [error]: can't parse qpfile for frame 0)
    Somit werden wohl die I-Frames nicht korrekt an den Chapter-Sprungmarken gesetzt?


    -> vermutlich nicht, denke x264 mag es nicht wenn das qpfile ein geflaggtes utf-8 file ist. Werde ich mir angucken.

  • Zitat

    denke x264 mag es nicht wenn das qpfile ein geflaggtes utf-8 file ist. Werde ich mir angucken.


    Ja, das wars -> gefixed

    zum Tagging:
    Fütterst Du Hybrid mit separatem audio und video stream? (sieht so aus und ist vermutlich der Grund warum es mit dem tagging Probleme gibt. :)
    -> Sieht so aus, als ob das tagging nicht greift, wenn der Audiostream aus einer externen Quelle kommt. (werde ich fixen)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!