Moin.. ich versuche über VB.NET eine MKV File zu Splitten... nur logischerweise gehen mir bei der Zweiten Split Datei die Medien Infos wie z.b. Codecs, Inhalt usw. verloren. Kennt jemand eine Möglichkeit diese Informationen welche sich am Dateianfang befinden auszulesen und in die zweite Datei zu schreiben ?
Medien Informationen beim Splitten mitnehmen?
-
-
... nur logischerweise gehen mir bei der Zweiten Split Datei die Medien Infos wie z.b. Codecs, Inhalt usw. verloren. Kennt jemand eine Möglichkeit diese Informationen welche sich am Dateianfang befinden auszulesen und in die zweite Datei zu schreiben ?
Für mich ist das nicht logisch.MKV ist ein Container. Wenn Du weisst, wie er aufgebaut ist, weißt Du auch, welche Daten sich Dein Programm "merken" und an den Anfang der nächsten Datei setzen muss.
Als Einstieg könnte http://de.wikipedia.org/wiki/Matroska dienen.
Weiter kann ich Dir leider nicht helfen, da ich mich noch nicht mit MKV beschäftigt habe.
-
Die Wikki hilft mir nicht wirklich.. absolut 0 Inforamtionen mit denen ich etwas anfangen könnte. Außerdem geht es nicht nur um den Container sondern auch um den Inhalt.. also welche Typen beinhaltet sind.
-
Ein Kontainer hat selbstverständlich Zusatzinformationen, in denen gespeichert wird, was er enthält. Häufig verwendet man dazu einen "Header" -- einen exakt definierten Datenblock, auch wenn er aus variablen Teilen bestehen kann, aber alle Teile müssen bestimmten Spezifikationen genügen.
Mit Sicherheit findest du die Informationen auf matroska.org -- und wenn's nur C-Headerdateien mit Datenstruktur-Definitionen sind (aber ich weiß, dass Matroska ausführlich dokumentiert ist, denn schon dadurch wollte man sich gegenüber OGM als besser erweisen).
-
Ok Dank dir LigH... Aber jetzt noch eine andere Frage was mir gerade so kommt... Anstatt die MKV direkt zu öffnen frage ich mich schon seit langen wie es genau abläuft wenn man z.b. in MeGui eine AVS Datei Läd.. also wie genau kann MeGui oder andere Programme über den AVs Script auf die Reine Video Spur zugreifen ? Öffnen die Programme auch einfach die Datei welche sich in DirectShowSource befindet ? Oder greifen diese direkt auf den VideoOutput des Codecs z.b. ffdshow zu ?
-
AviSynth öffnet das Video (im Fall von DirectShowSource mit Hilfe von DirectShow-Filtern), decodiert es, und stellt es dem aufrufenden Programm unkomprimiert bereit, als ob es sich um ein AVI handeln würde (siehe Wichtig-Beiträge zum Thema "AviSynth" und "Frameserver").
Im Fall der MeGUI ist das aufrufende Programm der jeweilige Encoder (mencoder.exe, x264.exe, xvid_encraw.exe, ...); die MeGUI selber interessiert sich eigentlich nicht für den Videoinhalt (außer falls sie Bildfläche, Bildanzahl u.ä. erkennen sollte, weiß ich im Moment gar nicht).
-
Hmm.. du bringst mich da auf eine Idee... gibts es in AviSynth eine möglichkeit damit er bei DShow das video ab einer bestimmten Länge abspielt ? Also sagen wir von 1:30:50 bis 1:31:50 Das ich also nur eine Minute habe ?
-
Trim()
-
Ha Perfect ! jetzt muss ich nur noch eine möglichkeit finden die Gesamtzahl der Frames auszulesen und in mein Programm zu packen.
-
Moin.. weiss jemand wvon euch wie man den Output von x264 in eine NET Anwendung bekommt ?
-
:google: ".NET capture stdout" vielleicht, oder verwandte Suchanfragen... Kommt auf die Programmiersprache an. Vielleicht mal in die MeGUI-Quelltexte schauen?!
-
stdOut habe ich schon versucht.. is nich.. VB.NET 08 ... Guck jetzt ma bei SourceForge..
-
VB könnte dafür ungeeignet sein. Diese Sprache bietet eventuell gar nicht erst so was wie "AssignConsole" an, geschweige denn systemnahe Funktionen.
-
Ha Perfect ! jetzt muss ich nur noch eine möglichkeit finden die Gesamtzahl der Frames auszulesen und in mein Programm zu packen.
Ist kein .NET http://www.delphipraxis.net/topic43591.html -
Danke.. Die Frameanzahl berechne ich jetzt über Die Gesamtlänge des Films in Sec. geteilt durch die Framerate müsste ziemlich genau hinkommen.
-
Das mit der MediaInfo DLL war ein SUper TIP !! habe Dank !!
-
VB könnte dafür ungeeignet sein. Diese Sprache bietet eventuell gar nicht erst so was wie "AssignConsole" an, geschweige denn systemnahe Funktionen.
Dafür gibts dann auch die PInvokes.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!