Media Information Extractor для Java [закрыто]

Мне нужна библиотека извлечения медиаинформации (чистая Java или JNI-оболочка), которая может обрабатывать общие форматы мультимедиа. В первую очередь я использую его для видеофайлов, и мне нужна по крайней мере эта информация:

  1. длина видео (время выполнения)
  2. видео битрейт
  3. видео частота кадров
  4. формат видео и кодек
  5. размер видео (ширина x высота)
  6. аудио каналов
  7. аудио-формате
  8. аудио битрейт и дискретизация ставка

есть несколько библиотек и инструментов, но я не мог найти для Java.

5 ответов


после нескольких дней задавать этот вопрос, я нашел MediaInfo которая поставляет десятки технической и другой информации о видео или аудио файле.

существует оболочка JNI для MediaInfo в subs4me ' s источник дерева я нахожу это очень полезным. Вот некоторые фрагменты кода, которые показывают, как извлечь информацию из медиа-файла:

String fileName   = "path/to/my/file";
File file         = new File(fileName);
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);

обратите внимание, что приведенный выше код-это простой пример и не содержат любую проверку ошибок (что является плохой привычкой в реальном сценарии). Также обратите внимание, что информация, которую вы можете извлечь с помощью MediaInfo, не ограничивается приведенными выше. См. необработанный вывод MediaInfo, чтобы узнать, какую информацию о носителе вы можете извлечь или прочитать MediaInfo C++ SDK.


источник FileBot содержит оригинальную и наиболее поддерживаемую оболочку MediaInfo JNA:

https://github.com/filebot/filebot/blob/master/source/net/filebot/mediainfo/MediaInfo.java

Я использую собственные библиотеки MediaInfo в моем OSS FileBot более 2 лет. Работает очень хорошо на всех платформах. Windows, Linux, MacOS и даже встроенный Linux (ARM).

http://www.filebot.net/


вам не нужна структура для этого материала, например, формат AVI video container имеет 56 байт заголовка содержит все соответствующие метаданные. на этом сайте тоже есть куча других форматов, все они кажутся довольно тривиальными для реализации.


попробовать Xuggler. Вот некоторые Xuggler исходный код который запрашивает медиафайл и распечатывает всевозможные полезные метаданные.

  • искусство

вы пробовали JAVA Media Framework API http://java.sun.com/javase/technologies/desktop/media/jmf/ но я не уверен, будет ли у него достаточно поддержки, как Xuggle выше, который использует FFMpeg, единственным преимуществом использования этого будет кросс-платформенная поддержка.