Wer versucht die Länge eines Videos C# zu ermitteln, wird im Internet viele Lösungsvorschläge finden. Oftmals sind diese aber unvollständig, funktionieren nicht oder einfach nur unverständlich.
Ich zeige folgend die Nutzung der MediaInfo-Bibliothek.
Vorbereitung:
- Die aktuelle Version der MediaInfo-Bibliothek herunterladen
- Die MediaInfo.dll selbst, als auch den C# Wrapper in das eigene Projekt integrieren
- Die Video-Datei mit Hilfe des Wrappers öffnen, die Länge abfragen und wieder schließen
Download der MediaInfo-Bibliothek
- Auf der SourceForge-Seite den Reiter „Files“ auswählen
- In der Verzeichnisliste „binary“ auswählen
- „libmediainfo0“ auswählen
- Den obersten Eintrag/die aktuellste Version auswählen (z.B. „0.7.62“)
- Die passende Windows-Version „WithoutInstaller“ downloaden. Für ein 64bit System muss die x64 Version heruntergeladen werden, für ein 32bit die i386
(z.B. „MediaInfo_DLL_0.7.62_Windows_x64_WithoutInstaller.7z“
Projektintegration
- Die heruntegeladene 7z-Datei mit 7-Zip entpacken
- Die MediaInfo.dll aus dem Hauptverzeichnis in das Visual-Studio-Projekt auf der Hauptebene integrieren
- Im Eigenschaftsfenster der MediaInfo.dll den „BuildVorgang“ auf „Inhalt“ und „In Ausgabeverzeichnis kopieren“ auf „Kopieren, wenn neuer“ stellen
(Die MediaInfo.dll muss später parallel zur exe der Anwendung liegen.) - In der Zip unter „Developers“->“Source“->“MediaInfoDll“ die „MediaInfoDLL.cs“ (C# Wrapper) an eine beliebige Stelle in das Visual-Studio-Projekt integrieren
Länge der Video-Datei abfragen
var mediaInfo = new MediaInfo(); mediaInfo.Open(fullPath); var durationInMilliSecondsString = mediaInfo.Get(StreamKind.Video, 0, "Duration"); mediaInfo.Close(); if (durationInMilliSecondsString != null) { var durationInMilliseconds = long.Parse(durationInMilliSecondsString); }
13. Juni 2015, 17:26 Uhr
Schade, wird vom VisualStudio12 nicht akzeptiert. Die DLL lässt sich nicht einbinden, bis zum Eigenschaftenfenster komme ich erst gar nicht.
6. August 2015, 22:45 Uhr
Visual Studio spielt für die Integration keine Rolle. Die dll muss nicht in Visual Studio eingebunden werden, sondern lediglich im bin-Verzeichnis, ggf. auch im Windows/Stystem-Vereichnis abgelegt werden.
Es wird nicht direkt mit der dll gearbeitet, sondern nur mit der MediaInfo.cs.
Ich helfe gerne auch per Mail oder Skype.