2010-06-23 10 views
15

Eigenschaften> Datum erstellt ... ich dachte, dies bedeute das Datum, an dem das Video erstellt wurde, aber schließlich erkannte ich, dass sich das Datum jedes Mal ändert, wenn ich mich bewege, reorganisiere, sogar eine Datei öffne. Häufig ist das geänderte Datum früher als das erstellte Datum. das Datum, an dem ein JPEG genommen wurde, ist leicht verfügbar. Gibt es eine Möglichkeit, die gleichen Informationen von einer AVI- oder MP4-Datei zu erhalten? danke für alle Informationen, die Sie geben können.Wie finde ich das Datum, an dem ein Video (.AVI .MP4) aufgenommen wurde?

+0

Ich denke, diese Antwort: http://stackoverflow.com/questions/26051273/whats-the-best-way-to-get-video-metadata-from-a-mp4-file-in-asp-net-net- mvc-using-c hat eine Lösung. – Beniamin

Antwort

0

Die Existenz dieser Metadaten hängt vollständig von der Anwendung ab, die die Datei geschrieben hat. Es ist sehr üblich, JPG-Dateien mit Metadaten (EXIF-Tags) über die Datei zu laden, z. B. Zeitstempel, Kamerainformationen oder Geolokalisierung. ID3-Tags in MP3-Dateien sind ebenfalls sehr verbreitet. Aber es ist viel weniger üblich, diese Art von Metadaten in Videodateien zu sehen.

Wenn Sie nur ein Werkzeug benötigen diese Daten manuell aus Dateien zu lesen, GSpot könnte den Trick tun: http://www.videohelp.com/tools/Gspot

Wenn Sie dies in Code lesen wollen, dann stelle ich mich vor jedem Container-Format seine eigenen haben wird Standards und jeder wird ein wenig Forschung und Umsetzung zu unterstützen.

5

Es scheint nicht, ein gut definierte Standard für Video-Metadaten (im Vergleich zu Fotos und Audio-Dateien, die EXIF ​​und ID3/etc. Respectively) zu sein

Einige Tags wie zum Beispiel existiert Titel, Komponist usw. Sie können diese sehen, wenn Sie eine Filmdatei in Windows 7 (vielleicht auch frühere Versionen) Explorer auswählen oder mit der rechten Maustaste klicken und Eigenschaften anzeigen. Ich habe leider kein Tag für das Aufnahmedatum gefunden - das nächste verfügbare Objekt ist (integer) :-(

Programmatisch können Sie die meisten dieser Tags in .NET mit Taglib Sharp aus dem Mono-Projekt lesen und schreiben Binärdateien sind auf der banshee FTP server.Es hat eine ziemlich beeindruckende Liste von Formaten unterstützt (aber immer noch, stellen Sie sicher, dass Ausnahmen beim Lesen oder Schreiben von Tags zu fangen - es wird jedes Mal, wenn es eine Datei findet es nicht verstehen, was passiert ist . ich mehrmals für meine kleine Sammlung von zu Hause Aufnahmen)

lesen Tags:

using (var f = TagLib.File.Create(@"c:\Path\To\MyVideo.mp4")) 
{ 
    if (f.Tag != null) 
    { 
     string title = f.Tag.Title; 
     Size resolution = new Size(f.Properties.VideoWidth, f.Properties.VideoHeight); 
     int year = f.Tag.Year; 
     // etc. 
    } 
} 

und in ähnlicher Weise zu Schreib Metadaten in die Datei zurück:

using (var f = TagLib.File.Create(@"c:\Path\To\MyVideo.mp4")) 
{ 
    f.Tag.Title = "My Awesome Movie"; 
    f.Tag.Year = (uint)2011; 
    f.Save(); 
} 
0

Für mich ist die mtime (bei Änderungen) auch vor dem Zeitpunkt, erstellen in vielen (meisten) Fällen da, Wie Sie sagen, ändert jede Reorganisation die Erstellungszeit. Die mtime AFAIUI ist jedoch eine genaue Spiegelung davon, wann der Dateiinhalt tatsächlich geändert wurde, so dass eine genaue Aufzeichnung des Videoaufnahmedatums erfolgen sollte.

Nachdem ich diesen Metadatenfehler für Filmdateien entdeckt habe, werde ich meine Videos basierend auf ihrer Zeit umbenennen, also habe ich das auf eine robustere Weise gespeichert!

1

Probieren Sie exiftools oder mediainfo, die Ihnen eine Exportfunktion als Text bietet. Achten Sie nur auf die Sommerzeit.

0

Der beste Weg, ich immer die „dateTaken“ Datum oder Bilder entweder für Video gefunden ist zu verwenden:

Imports Microsoft.WindowsAPICodePack.Shell 
Imports Microsoft.WindowsAPICodePack.Shell.PropertySystem 
Imports System.IO 
Dim picture As ShellObject = ShellObject.FromParsingName(path) 
Dim picture As ShellObject = ShellObject.FromParsingName(path) 
Dim ItemDate=picture.Properties.System.ItemDate 

Der obige Code die Schale api erfordert, die zu Microsoft intern ist, und hängt nicht auf irgendeiner anderen externen DLL.

Verwandte Themen