Библиотека 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