• mpvMatroska ist momentan in der Entwicklung und ist auf GitHub verfügbar.

    Das ganze Projekt hat mal als Ziel, ein funktionierendes Matroska Menü, aber das wird wohl noch etwas dauern.

    Im mpv GitHub gibt es dazu auch eine Unterhaltung.

    Die aktuelle Version von mpvMatroska kann in den GitHub-Releases heruntergeladen werden.

    Fehler, Vorschläge usw. können hier oder besser auf GitHub gemeldet werden.

    Alter Text

    Hallo

    Wie der Titel bereits vermuten lässt geht es um den Media Player mpv und dessen Fähigkeit Scripte zu verarbeiten.

    Ich bin blutiger Anfänger mit mpv und habe seit ein paar Tagen angefangen die Docu zu lesen und alles was es auf GitHub zu finden gibt.

    Dabei hat mich natürlich am meisten interessiert wie mpv mit Matroska Dateien zurecht kommt, und da meine ich "meine" ganz speziellen mkv's welche Chapter-Segment-Linking nutzen und andere tolle Matroska Features.

    Auf GitHub habe ich dann ein paar Issues unter die Lupe genommen und bin dabei am Ende auf folgendes Script gestossen.

    https://github.com/CogentRedTester/mpv-segment-linking

    Es geht hierbei um das Hard-Linking, welches so nicht direkt in mpv implementiert ist, aber mittels diesem Scripts wird es "simuliert".

    Der Code ist gut nachvollziehbar und der Entwickler hat nach seinem Wissensstand auch alles sehr gut umgesetzt.

    Ich bin da echt schwer beeindruckt was man alles mit mpv tun kann.

    Jedenfalls sieht es wohl so aus als könnte ich das Matroska Menü mit mpv verwirklichen.

    Mir ist schon klar das ich erstmal jede Menge zu lernen habe wie das alles so läuft mit den Scripts und mpv.

    Ich kann etwas JavaScript, von Lua habe ich allerdings keine Erfahrung. Lua sieht für mich bissl wie eine Mischung aus FreePascal und C aus.

    1) Ist es egal welche Script-Sprache man nutzen will oder gibt es ein zwingendes Muss für eine der beiden Sprachen?

    Das Script benutzt das "EDL" system: davon habe ich noch nie was gehört, aber es sieht auch nicht so kompliziert aus.

    Das tolle daran ist, das alle Dateien viturell zu einer "Datei/Inahlt" verbunden werden. somit könnte ich sogar Nested-Ordered-Chapters support ermöglichen.

    2) kann ich das EDL system auch mittels parameter an die mpv.exe übergeben?

    3) Welchen Code Editor nutz man um Lua zu coden?

    In dem Script nutzt der Entwickler mkvinfo.exe um angewisse Infos der Dateien zu gelangen.

    4) In wie weit kann ich mit den Scripten Dateien selber parsen? Ist es da möglich die Bytes einer Datei auszulesen?


    Nun mal etwas konkretes zu einer Funktion aus dem Script in Zeile 84

    local function get_uids(file, fail_silently)

    Code
    local cmd = mp.command_native({        name = "subprocess",        playback_only = false,        capture_stdout = true,        args = {"mkvinfo", file}    })

    dieses bisschen code startet anscheind die mkvinfo.exe.

    Und das ganze wird aber irgendwie von dem "mp"-system "gesteuert".

    Kann mir das einer genauer erklären bitte.

    Ich würde mich über jeglich Info und Hilfe von euch freuen.

  • Zu 3.: Ich weiß nicht, ob es einen speziellen optimalen Lua-Editor gibt; viele fortgeschrittene Texteditoren (PSPad, Notepad++, CONtext ...) unterstützen Syntax-Highlighting und evtl. auch den einfachen Aufruf von Hilfesystemen und z.B. Compilern.

  • Notepad ++ nutze ich selbst eigentlich immer für alles was "Text" ist, und ja Lua wird da auch ge-Highlighted.

    Aber so ist das coden nicht besonders schön.

    Ich habe da schon Eclipse versucht aber irgendwie bekomme ich das Lua-Develment-it nicht zum laufen.

    VS-Code mekert wegen meinem Win7 rum.

    Auf ejdenfall habe ich schon in der Lua Docu bissl gelesen und die Antwort auf Frage 4) bekommen.

    Ja man kann Dateien selber parsen.

  • Ich habe mich mal in die ganze Materie eingearbeitet und mit Hilfe von CogentRedTester da auch schon etwas lauffähiges zusammengebaut.

    mpvMatroska wird das ganze Projekt mal heissen.

    Auf GitHub kann das ganze auch verfolgt werden.

    https://github.com/mpv-player/mpv/issues/11780

    Zum installieren einfach das zip in den scripts ordner von mpv entpacken.

    Download ist im ersten Post.

  • Das ganze Projekt ist nun auf GitHub verfügbar.

    Ich habe es doch tatsächlich geschafft all die Matroska-Kapitel Typen, und die damit verbundenen Matroska Features, implementieren zu können.

    Die Menü-Kapitel Prozesse fehlen noch, sollen aber für das Native und Interaktive Matroska Menü eingebaut werden, so meine Vorstellung.

    Ich weis den meisten werden all diese speziellen Kapitel-Typen und dessen Funktionen nichts sagen, aber wer weis was ein Nested-Ordered-Linked-Edition Kapitel ist der hat Matroska verstanden.

    Es gibt aber auch schon mal ein einfaches nützliches Feature: Multiple Kapitelnamen

    Ich selbst habe einige Serien mit zwei oder mehr Sprachen und auch die Kapitel haben mehrere Sprachen und namen.

    mpvMatroska überwacht im moment die aktive Audiospur und ändert die Kapitelnamen wenn die entsprechende Sprache vorhanden ist.

    mpvMatroska kann auch Matroska Hard-Linking und das perfekt. Alle Test Dateien von meinem Matroska-Playback Repo funktionieren. An zweiter Stelle ist MPC-HC welches beim Endless-Loop abstürzt.

  • Es gibt wieder eine neue Test version.

    Das Umschalten der Untertitel spur wechselt nun auch die Kapitelnamen wenn die entsprechende Sprache vorhanden ist.

    Wenn keine passende Sprache gefunden wird bleibt der aktuelle Name erhalten.

    Das ganze funktioniert nun auch für die Multiplen Versionsnamen.

    Der Versionsname wird nun auch im OSC und mpv-Window (media title) angezeigt.

    Bis her kenne ich keinen Player wo das sofort ersichtlich ist welche Version gerade läuft.

    Entweder muss man in irgend welchen Popup menüs nachschauen oder wie es mpv macht nur eine kurze info beim Wechseln einer Version angezeigt wird.

    Da mpv intern die Versionen nicht richtig verarbeitet und eine falsche Liste erstellt(nicht immer) habe ich das komplette Zeitleisten-Handling selbst "in die Hand" genommen.

    Später soll ja mal eine ordentliche Auswahl der Versionen(und anderes) zur Verfügung stehen.

  • Ohja ratDVD kenn ich auch noch, das ist ja gefühlt hundert jahre her :)

    Also ich habe gestern und vorgestern mich ein wenig in "uosc" reingelesen was ein echt schickes Click-Menü hat.

    und auch sehr leicht zu konfigurieren ist.

    Noch bin ich blutiger Anfänger auf dem mpv-Gebiet. Viele Dinge sagen mir noch nicht wirklich was und es ist wohl auch gar nicht soooo leicht da eine GUI zu basteln.

    Ich sags aber auch mal gleich, so ein Menü wie es auf DVD/Bluray gibt wird es in Matroska nicht wirklich geben.

    ausser es hat da echt einer Bock die ganze sache zu coden.

    Im moment gibt es in Matroska ja noch nicht einmal irgend welche Menu-Buttons oder der gleichen.

    All das muss erst noch "erfunden" entwickelt werden.

  • Ich wurde im Matroska Spec GitHub von jemand auf etwas aufmerksam gemacht, was am Ende einer ratDVD sehr ähnlich ist.

    Man kann sämtlichen Inhalt einer Bluray in einem einzigen mkv speichern, das ist soweit kein problem.

    Nur die Handhabung dieser mkv ist bis jetzt nicht wirklich möglich.

    Aber es gibt ja das gute alte feature TRACKSETEX aus dem Haali-Splitter.

    Damit lässt sich nämlich Inhalte gruppieren, und genau das habe ich gestern mal angefangen zu coden.

    Mal schauen wie weit ich heute nacht komme und dann gibts auch wieder eine neue Testversion.

    In einer alten cE version ist ja noch ein TRACKSETEX editor enthalten.

    und wenn das ganze funktioniert dann werde ich es auch wieder in den aktuellen cE einbauen.

    Das einzige was ich da jetzt noch nicht hinbekommen werde, ist das auswählen der Inhaltsgruppen via Auswahlbox.

  • Ja na klaro, mein mpvMatroska wird das können,und damit auch mpv. (Haali Splitter geht ja auch aber der ist halt zu alt)

    Das ganze klingt vielleicht auch alles zu "Hochtrabend", am ende werden ja nur die entsprechenden Spuren auf einmal gewechselt.

    Und auch die Version wird gewechselt wenn das so angegeben ist im TRACKSETEX code.

    Dieses Feature ist sehr simple einzubauen und jeder Player könnte das einbauen.

    Aber TRACKSETEX ist halt nicht offiziell Matroska, daher impelmentiert das auch kein Player.

    Das Feature hatte ich gestern fertig bekommen und es funktioniert auch schon soweit.

    Allerdings wie ich sagte habe ich da keine rrichtige Auswahlliste wo man das alles schön anklicken kann.

    Zum testen habe erstmal zwei Short-Cuts hard-gecodet, so dass ich zwei TRACKSETEX Einträge anlegen kann und diese durchschalten kann.

  • Nun ist es soweit, eine neue Test version ist im ersten Post verfügbar

    Ich habe mich weiter in die mpv Materie eingearbeitet und dabei viel neues gelernt.

    Das "script-message-to" System ist dabei besonders schick. Damit wird es wohl möglich sein mit uosc zu kommunizieren um eigene Auswahllisten zu erstellen.

    Ich habe aber auch ein wenig Bedenken mich zu sehr auf uosc "zu stürtzen". Damit würde man sich halt abhängig machen und User die kein usoc nutzen wollen könnten dann nicht alle mpvMatroska Features nutzen.

    Das coden eigener grafischen Elemente ist auf jedenfall eine ziemlich große Baustelle und daher werde ich wohl vorerst alles an uosc erst mal binden.

    Dennoch habe ich nun auch die möglichkeit wenigstens mittels Hotkeys alle(mehr oder weniger) funktionen bereit zustellen.

    OK, dann kommen wir mal zu den neuerungen:

    Video Rotation: ich finds echt krass das mpv da wirklich Grad-genau arbeitet.

    MPC-HC/BE kann nur die üblichen 90-Grad Vielfachen. Es sieht schon schräg aus, wenn man ein Video um 29° dreht :)


    und nun das beste, die Matroska Inhaltsgruppierung:

    So habe ich das mal genannt. es ist natürlich nicht offiziell Matroska aber das war Haali TRACKSETEX auch nie.

    Der Hotkey "g" ist vordefiniert zum durschalten der Inhalts-Gruppen.

    Momentan gibt es nur in meinem alten cE einen TRACKSETEX editor, oder wenn man sich auskkennt kann man das auch händisch in eine Tags.xml eingeben.

  • Da nun soweit bei mir alles funktioniert werde ich jetzt erstmal im cE das Matroska ContentGrouping(Inhaltsgruppierung) einbauen.

    Das wird leider ein bissl Zeit in Anspruch nehmen. Sieht nach einer Menge Arbeit aus.

    Dennoch denke ich das es sinnvoll ist denn was nützt ein funktionierendes Feature wenn es nicht einfach zu erstellen geht.

    Im alten cE ist das ganze auch eher rudimentär und nicht einfach zu verstehen.


    Ich habe für mpvMatroska noch eine kleine Sache eingebaut, war ein User Wunsch im mpv-issue tracker

    Der Titel einer Matroska Datei wird ausgelsen und als mpv Media-Titel verwendet, wenn vorhanden.

    Dabei wird unterschieden ob es sich um die Hauptdatei handelt oder die erste verknüpfte Datei falls Kapitel-Segment-Linking verwendet wird.

    Werde sicher am WE eine neue Version hochladen.

  • Ein wenig Zeit hatte ich um den neuen Editor im cE zu coden.

    Hier schon mal ein Bild.pasted-from-clipboard.png


    Mal sehen wie ich die kommenden Tage zeit habe, dann kann ich eine erste Test version veröffentlcihen.

    Es ist noch jede Menge Arbeit bis alles fertig ist, aber das Grundgerüst steht und die Inhaltsgruppen können erstellt, bearbeitet und gespeichert werden.

  • Es hat noch ein klein wenig gedauert aber nun ist eine Testversion verfügbar.

    Ich will mal an der Stelle noch nicht zu tief auf alle Funktionen eingehen um zu sehen wie intuitiv das ganze geworden ist.

    Und sicher wirds auch noch den ein oder anderen Fehler geben (tut's ja meistens).

    Ein paar Kleinigkeiten fehlen auch noch, wie das verschieben der Nodes per Drag&Drop.

    Na dann viel Freude mit dem neuen Matroska Inhaltsgruppierungs Feature.

  • mpvMatroska beherrscht nun auch das native MatroskaScript Menü.

    Ein weiterer Meilenstein auf dem Weg zum interaktiven Matroska ist damit geschafft.

    Es gibt auch bereits einen Vorschlag für die neuen interaktiven MatroskaScript Kommandos.

    Allerdings ist mir noch nichts so recht klar wie ich die ganze sache mit den Klickbaren Buttons bewerkstellige.

    Aber mit der Zeit wird auch das sciher geschafft werden.

    Also falls sich einer von euch auskennt mit den VOB-Buttons von einer DVD oder auch wie ein Bluray menü funktioniert, würde mir sicher viel weiter helfen.

    Für mpv selbst muss es wohl gar nicht so schwer sein das alles "abzufangen und aufzubereiten" aber auch hier muss ich wohl erst noch bissl lernen.

  • DVD-Menüs enthalten ein MPEG2-Video (ein Standbild genügt auch) als Hintergrund, ein Subpicture mit 4 Palettenfarben für Highlights, und rechteckige Auswahlbereiche mit einer Reihe von Funktionen: Sie definieren den Bildbereich, der sich farblich verändert (Anwendung alternativer YUVA-Farbpaletten), wenn ein Button ausgewählt oder betätigt wird (die dürfen sich überlappen, müssen aber rechteckig sein); eine Aktion, die ausgelöst wird, wenn der Button betätigt wird; Verknüpfungen zu anderen Buttons bei der Navigation mit dem Cursorkreuz.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!