Как мне найти дату, на которой записано видео (.AVI.MP4)?
свойствa > дата создана... я думал, что это означает дату создания видео, но в конце концов понял, что дата меняется каждый раз, когда я перемещаюсь, реорганизую и даже открываю файл. часто изменение даты предшествует дате создания. дата, когда была сделана jpeg, легко доступна. есть ли способ получить ту же информацию из файла AVI или MP4?
благодарю вас за любую информацию, которую вы можете дать.
Ответы
Ответ 1
Кажется, что нет стандартного стандарта для метаданных видео (по сравнению с фотографиями и аудиофайлами, которые имеют EXIF и ID3/и т.д. соответственно)
Некоторые теги существуют, например, например. Title, Composer и т.д. Вы можете увидеть их, если вы выберите файл фильма в Windows 7 (возможно, более ранних версиях), или щелкните правой кнопкой мыши и просмотрите свойства. К сожалению, я не нашел тег для даты записи - ближайшая доступная вещь Year
(целое число): - (
Программно вы можете читать и записывать большинство этих тегов в .NET, используя Taglib Sharp из монопроекта. Источник и двоичные файлы доступны на сервере FTP banshee. У этого есть довольно внушительный список поддерживаемых форматов (но все же, убедитесь, что вы поймаете исключения при попытке прочитать или написать теги - он будет бросать всякий раз, когда он находит файл, который он не может понять, что-то, что со мной произошло несколько раз для моей скромной коллекции домашних записей.)
Чтобы прочитать теги:
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();
}
Ответ 2
Быстрая команда для поиска метаданных даты/времени во многих видеофайлах
Следующая команда хорошо помогла мне найти метаданные даты/времени в различных видео AVI/MP4:
ffmpeg -i /path/to/video.mp4 -dump
Примечание. Как уже упоминалось в других ответах, нет никакой гарантии, что такая информация доступна во всех видеофайлах или доступна в определенном формате.
Сокращенный пример выходных данных для некоторых файлов AVI
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
Сокращенный пример вывода для некоторых файлов MP4
Metadata:
major_brand : mp41
minor_version : 538120216
compatible_brands: mp41
creation_time : 2018-03-13T15:43:24.000000Z
Ответ 3
Существование этой части метаданных полностью зависит от приложения, которое написало файл. Очень часто загружаются файлы JPG с метаданными (тегами EXIF) о файле, такие как метка времени или информация о камере или геолокация. Теги ID3 в файлах MP3 также очень распространены. Но гораздо реже встречаются такие метаданные в видеофайлах.
Если вам просто нужен инструмент для чтения этих данных из файлов вручную, GSpot может сделать трюк:
http://www.videohelp.com/tools/Gspot
Если вы хотите прочитать это в коде, я предполагаю, что каждый формат контейнера будет иметь свои собственные стандарты, и каждый из них займет немного исследований и поддержки для поддержки.
Ответ 4
Попробуйте exiftools или mediainfo, который предоставляет вам функцию экспорта в виде текста. Просто обратите внимание на летнее время.
Ответ 5
Для меня mtime (время модификации) также раньше даты создания во многих (большинстве) случаях, поскольку, как вы говорите, любая реорганизация изменяет время создания. Тем не менее, mtime AFAIUI является точным отражением того, когда содержимое файла было фактически изменено, поэтому должна быть точная запись даты захвата видео.
После обнаружения этого отказа метаданных для файлов фильмов я собираюсь переименовать свои видео на основе их времени, поэтому я сохранил это более надежным способом!
Ответ 6
Лучший способ найти дату 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
Приведенный выше код требует оболочки api, которая является внутренней для Microsoft и не зависит от какой-либо другой внешней dll.
Ответ 7
Я использовал следующий онлайн-инструмент: https://www.get-metadata.com
Это позволяет загрузить файл и проанализировать его, а затем показывает все его метаданные.