properties> date created... I thought this meant the date the video was created, but finally realized that date changes every time I move, reorganize, even open a file. often, the date modified is earlier than date created. the date a jpeg was taken is readily available. Is there any way to get the same information from an AVI or MP4 FILE?
MP4 files can contain metadata as defined by the format standard, and in addition, can contain Extensible Metadata Platform (XMP) metadata.
The following command has served me well in finding date/time metadata on various AVI/MP4 videos:
ffmpeg -i /path/to/video.mp4 -dump
Note: as mentioned in other answers, there is no guarantee that such information is available in all video files or available in a specific format.
Metadata: Make : FUJIFILM Model : FinePix AX655 DateTime : 2014:08:25 05:19:45 JPEGInterchangeFormat: 658 JPEGInterchangeFormatLength: 1521 Copyright : DateTimeOriginal: 2014:08:25 05:19:45 DateTimeDigitized: 2014:08:25 05:19:45
Metadata: major_brand : mp41 minor_version : 538120216 compatible_brands: mp41 creation_time : 2018-03-13T15:43:24.000000Z
There doesn't seem to be a well defined standard for video metadata (compared to photos and audio files, which have EXIF and ID3/etc. respectively)
Some tags exists like e.g. Title, Composer etc. You can see those if you select a movie file in Windows 7 (perhaps earlier versions also) explorer or right click and view properties. I have not found a tag for recording date unfortunately - the closest thing available is Year
(integer) :-(
Programatically, you can read and write most of these tags in .NET using Taglib Sharp from the mono project. Source and binaries are available on the banshee FTP server. It has a pretty impressive list of formats it supports (but still, make sure you catch exceptions when trying to read or write tags - it will throw whenever it finds a file it cannot understand, something which happened to me several times for my modest collection of home recordings.)
To read 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. } }
And similarly, to write metadata back to the 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(); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With