2010-06-23 280 views
15

屬性>創建日期...我認爲這意味着創建視頻的日期,但最終意識到每次移動,重組,甚至打開文件時,日期都會發生變化。通常,修改的日期早於創建日期。 jpeg拍攝的日期已經可用。有沒有辦法從AVI或MP4文件中獲取相同的信息? 感謝您提供任何信息。我如何找到錄像(.AVI .MP4)實際錄製的日期?

+0

我認爲這個答案︰http://stackoverflow.com/questions/26051273/whats-the-best-way-to-get-video-metadata-from-a-mp4-file-in-asp-net- mvc-using-c有一個解決方案。 – Beniamin 2017-04-23 07:33:45

回答

0

該段元數據的存在完全取決於寫入該文件的應用程序。加載包含文件的元數據(EXIF標籤)的JPG文件非常常見,例如時間戳或相機信息或地理定位。 MP3文件中的ID3標籤也很常見。但在視頻文件中看到這種元數據的情況很少見。

如果你只是需要一個工具來手動從文件中讀取這些數據,G點可能做的伎倆:如果你想讀這個代碼然後我想每個容器格式都將有自己的 http://www.videohelp.com/tools/Gspot

標準,每個人都需要一點研究和實施來支持。

5

似乎沒有成爲視頻元數據良好定義的標準(與照片和音頻文件,其具有分別EXIF和ID3 /等)

有些標籤存在像例如標題,作曲家等你可以看到這些如果你選擇在Windows 7(也許早期版本)瀏覽器或右鍵單擊並查看屬性的電影文件。遺憾的是,我還沒有發現記錄日期的標記 - 最接近的東西是Year(整數):-(

編程方式,您可以使用單聲道項目中的Taglib Sharp在.NET中讀取和寫入大多數這些標記。二進制文件可以在banshee FTP server上找到,它有一個非常令人印象深刻的格式,它支持的列表(但仍然要確保在嘗試讀取或寫入標籤時捕獲異常 - 只要發現一個它無法理解的文件就會拋出異常, 。我好幾次我家錄音的適度集合)

讀取標籤:

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

同樣,以寫的元數據迴文件:

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

對我來說的mtime(修改時間)也早於創建日期在許多(大多數)的情況下,因爲,正如你所說,任何重組都會改變創建時間。但是,mtime AFAIUI是文件內容實際更改時間的準確反映,因此應該是視頻捕獲日期的準確記錄。

發現這個元數據失敗的電影文件後,我將重新命名我的視頻基於他們的時間,所以我有這種存儲更強大的方式!

1

嘗試使用exiftools或mediainfo,它爲您提供文本輸出功能。只要注意夏令時。

0

我發現讓「dateTaken」的日期爲視頻或圖片的最佳方法是使用:

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 

上面的代碼需要Shell編程,這是內部的微軟,並且不依賴在任何其他外部DLL上。