2010-06-23 19 views
15

proprietà> data di creazione ... pensavo che questo significasse la data in cui il video è stato creato, ma alla fine ho capito che la data cambia ogni volta che mi muovo, riorganizzo, persino apro un file. spesso, la data modificata è precedente alla data di creazione. la data in cui è stato preso un JPEG è facilmente disponibile. c'è un modo per ottenere le stesse informazioni da un file AVI o MP4? grazie per qualsiasi informazione tu possa dare.come trovo la data in cui un video (.AVI .MP4) è stato effettivamente registrato?

+0

Penso che questa risposta: http://stackoverflow.com/questions/26051273/whats-the-best-way-to-get-video-metadata-from-a-mp4-file-in-asp-net-net- mvc-using-c ha una soluzione. – Beniamin

risposta

0

L'esistenza di quel pezzo di metadati dipende interamente dall'applicazione che ha scritto il file. È molto comune caricare file JPG con metadati (tag EXIF) sul file, ad esempio un timestamp o informazioni sulla fotocamera o la geolocalizzazione. Anche i tag ID3 nei file MP3 sono molto comuni. Ma è molto meno comune vedere questo tipo di metadati nei file video.

Se avete solo bisogno di uno strumento per leggere questi dati dal file manualmente, GSpot potrebbe fare il trucco: http://www.videohelp.com/tools/Gspot

Se si desidera leggere questo codice, allora immagino che ogni formato contenitore sta per avere il suo standard e ognuno richiederà un po 'di ricerca e implementazione per supportare.

5

Non sembra essere uno standard ben definito per i metadati video (rispetto a foto e file audio, che hanno, rispettivamente, EXIF ​​e ID3/etc.)

Alcuni tag esiste come per esempio Titolo, compositore ecc. Puoi vedere quelli se selezioni un filmato in Windows 7 (forse anche versioni precedenti) explorer o fai clic con il pulsante destro del mouse e visualizza le proprietà. Purtroppo non ho trovato un tag per la data di registrazione: Year (intero) :-(

A livello di codice, è possibile leggere e scrivere la maggior parte di questi tag in .NET utilizzando Taglib Sharp dal progetto mono. i binari sono disponibili su banshee FTP server. Ha una lista impressionante di formati che supporta (ma comunque assicurati di rilevare le eccezioni quando provi a leggere o scrivere tag: verrà lanciata ogni volta che trova un file che non può capire, qualcosa che è successo a . me diverse volte per il mio modesto collezione di registrazioni casalinghe)

per leggere i tag:

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. 
    } 
} 

E allo stesso modo, per metadati write al file:

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

Per me il mtime (ora di modifica) è anche anteriore alla data di creazione in un sacco di (la maggior parte) dei casi in quanto, come dici tu, qualsiasi riorganizzazione modifica il tempo di creazione. Tuttavia, il mtime AFAIUI è un riflesso accurato di quando i contenuti del file sono stati effettivamente modificati, quindi dovrebbe essere una registrazione accurata della data di acquisizione video.

Dopo aver scoperto questo errore di metadati per i file di film, ho intenzione di rinominare i miei video in base al loro mtime, quindi li ho archiviati in un modo più robusto!

1

Provate a exiftools o mediainfo, che fornisce una funzione di esportazione come testo. Basta fare attenzione all'ora legale.

0

Il modo migliore che ho trovato di ottenere la data "dateTaken" sia per il video o le immagini è quello di utilizzare:

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 

Il codice di cui sopra richiede l'api guscio, che è interno a Microsoft, e non dipende su qualsiasi altra DLL esterna.

Problemi correlati