Как мне найти дату, на которой записано видео (.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 Это позволяет загрузить файл и проанализировать его, а затем показывает все его метаданные.