Как извлечь метаданные из различных форматов видеофайлов? - PullRequest
5 голосов
/ 09 февраля 2011

Как я могу извлечь метаданные из различных форматов видеофайлов, особенно Разрешение и тип используемого кодека. (Но также и все остальное, как автор). Я не смог найти библиотеку для этого.

Ответы [ 3 ]

5 голосов
/ 16 января 2012

Я обнаружил MediaInfo , который предоставляет десятки технической и теговой информации о видео- или аудиофайле.

Существует оболочка JNI для MediaInfo в дереве исходников subs4me , что я считаю очень полезным.

Вот некоторые фрагменты кода, которые показывают, как извлечь некоторую информацию из медиа-файла:

File file         = new File("path/to/my/file");
MediaInfo info    = new MediaInfo();

info.open(file);

String format     = info.get(MediaInfo.StreamKind.Video, i, "Format", 
                             MediaInfo.InfoKind.Text,
                             MediaInfo.InfoKind.Name);

int bitRate       = info.get(MediaInfo.StreamKind.Video, i, "BitRate", 
                             MediaInfo.InfoKind.Text,
                             MediaInfo.InfoKind.Name);

float frameRate   = info.get(MediaInfo.StreamKind.Video, i, "FrameRate", 
                             MediaInfo.InfoKind.Text, 
                             MediaInfo.InfoKind.Name);

short width       = info.get(MediaInfo.StreamKind.Video, i, "Width", 
                             MediaInfo.InfoKind.Text, 
                             MediaInfo.InfoKind.Name);

int audioBitrate  = info.get(MediaInfo.StreamKind.Audio, i, "BitRate", 
                             MediaInfo.InfoKind.Text, 
                             MediaInfo.InfoKind.Name);

int audioChannels = info.get(MediaInfo.StreamKind.Audio, i, "Channels", 
                             MediaInfo.InfoKind.Text, 
                             MediaInfo.InfoKind.Name);
3 голосов
/ 14 октября 2015

Решения vikiiii работают, но я нашел:

  • Все еще требовалось немного работы, чтобы все работало на моем рабочем столе. (скачать dll, распаковать код, просмотреть файлы ...)
  • Мы не имеем понятия о доступных константах (например, "BitRate")

Как следствие, я установил приложение Windows MediaInfo и выполнил поиск, которые являются доступными ключами для создания некоторого java Enum и упрощения использования.

Я создал хранилище на github https://github.com/clun/movies-metadata, чтобы все было в одном месте. Просто запустите mvn:test для примера проекта, чтобы получить информацию о примерах MP4, OGG, AVI, FLV, WEBM и MKV.

Вот пример кода теста:

  MovieMetadata movieMedataData = new MovieMetadata("./src/test/resources/small.mkv");
    movieMedataData.get(General.FORMAT);
    movieMedataData.get(Video.DURATION_STRING);
    movieMedataData.get(Video.WIDTH_STRING);
    movieMedataData.get(Video.HEIGHT_STRING);
    movieMedataData.get(Video.BITRATE_STRING);
    movieMedataData.get(Audio.COMPRESSION_RATIO);
    //...
0 голосов
/ 09 февраля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...