Библиотека Java для проверки метаданных видео (если это 1080p, 720p и т. д.) [закрыто]

в настоящее время я ищу библиотеку, которая просматривает метаданные видео и видит, является ли видео 1080p, 720p или, по крайней мере, может получить основные метаданные(разрешение, битрейт и т. д.), чтобы я мог выполнить вычисления, чтобы проверить себя.

Я надеюсь, что библиотека легкая по размеру, кросс-платформенная и может поддерживать ряд основных форматов. Что-то вроде https://github.com/drewnoakes/metadata-extractor но конечно для видео.

Я пробовал искать вокруг и ничего не нашли, существует ли такая библиотека?

2 ответов



Я еще не пробовал, но кажется Java MP4 Parser библиотеки-это то, что я искал. Он способен читать и редактировать метаданные, кросс-платформенный и, кажется, легкий в размере файла.

выдержка из документации github:

Java MP4 Parser

API Java для чтения, записи и создания контейнера MP4. Манипулирующий контейнеры отличаются от кодирования и декодирования видео и аудио. Использование библиотеки

библиотека публикуется в репозиториях Maven. Каждый отпуск нажат в промежуточный репозиторий, который публикуется на странице выпуска. На запрос конкретных выпусков можно переместить в Maven central.

  <dependency>
    <groupId>com.googlecode.mp4parser</groupId>
    <artifactId>isoparser</artifactId>
    <version>1.1.7</version>
  </dependency>

для проектов, которые не используют инструмент управления зависимостями друг артефакты выпуска (jar, javadoc-jar, source-jar) прикрепляются к страница выпуска. Пожалуйста, имейте в виду, что проект требует aspectj-rt.jar библиотека.

что вы можете делать?

типичные задачи для парсера MP4:

  • Muxing аудио / видео в файл MP4
  • добавить записи, которые используют те же настройки кодирования
  • добавление/изменение метаданных
  • сократить записи, опуская кадры все мои примеры будут использовать H264 и AAC, как эти два кодека наиболее типичны для файлов MP4. АС-3-это также не редкость, поскольку кодек хорошо известен с DVD. Есть также Файлы MP4 с H263 / MPEG-2 видео треки, но они больше не используются широко распространен, как и большинство телефонов android. Вы также можете

Muxing Аудио / Видео

API и процесс прямолинейны:

вы обертываете каждый файл формата raw в соответствующий объект трека.

H264TrackImpl h264Track = новый H264TrackImpl (новый FileDataSourceImpl ("видео.h264")); AACTrackImpl aactrack = новый AACTrackImpl(новый FileDataSourceImpl ("audio.aac"));

эти объекты дорожки затем добавляются в объект Movie

Movie movie = new Movie();
movie.addTrack(h264Track);
movie.addTrack(aacTrack);

объект Movie подается в MP4Builder для создания контейнера.

Container mp4file = new DefaultMp4Builder().build(movie);

напишите контейнер к соотвествующей раковине.

FileChannel fc = новый FileOutputStream (новый Файл ("output.mp4")).getChannel (); mp4file.writeContainer (fc); ФК.close (); есть случаи, когда частота кадров сигнализируется из группа или известен заранее, так что H264 не содержит его буквально. В этом случае вам придется предоставить его конструктору.

существуют реализации треков для следующих форматов:

  • кодек H264
  • AAC
  • AC3
  • EC3

и дополнительно две дорожки субтитров, которые непосредственно не обертывают raw формат, но они концептуально похожи.

Типичный Вопросы

аудио и видео не синхронизированы. Всякий раз, когда есть проблемы с время возможно убедитесь, что начать

аудио начинается перед видео

В AAC всегда есть samplerate / 1024 sample / s, поэтому каждый образец продолжительность 1000 * 1024 / частота миллисекунд.

  • 48KHz = > ~21.3 ms
  • 44.1 кГц => ~23.2 МС

путем пропускать образцы от начала вы можете легко сократить аудио дорожка. Удалите столько, сколько вам нужно. Вы не сможете сопоставить аудио и видео именно с этим, но человеческое восприятие более разумно к раннему аудио, чем к позднему аудио.

помните: если кто-то находится всего в 10 метрах задержки между аудио и видео >30ms. Мозг к этому привык!

AACTrackImpl aacTrackOriginal = новый AACTrackImpl (новый FileDataSourceImpl ("audio.aac")); / / удаляет первый образец и сокращает путь AAC by ~22ms CroppedTrack aacTrackShort = новый CroppedTrack (aacTrackOriginal, 1, aacTrack.getSamples().size ());

добавить записи с теми же настройками кодирования

важно подчеркнуть, что вы не добавлять любые два трека с:

  • разное разрешение
  • различные частоты кадров

что вы не можете сделать?

создать кадры из фильма. Нет , это не дешифратор. Этот МР4 парсер не знает, как это сделать. Создать фильм из JPEGs