Существует ли Java API для mp4 файлов?

Файлы Mp3 могут быть обработаны с помощью этой поддержки mp3 SPI, но я не нахожу что-то подобным mp4 файлам.

Любая справка ценилась бы.

- ОБНОВЛЕНИЕ

То, что я хочу сделать, получают размер файла, как я делаю с волновыми файлами с помощью этого кода:

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
AudioFormat format = audioInputStream.getFormat();
long audioFileLength = file.length();
int frameSize = format.getFrameSize();
float frameRate = format.getFrameRate();
float durationInSeconds = (audioFileLength / (frameSize * frameRate));

- ОТВЕТ

Вот код ответа с помощью подсказки @mdma (инструментарий IBM):

/**
 * Use IBMPlayerForMpeg4SDK to get mp4 file duration.
 * 
 * @return the mp4File duration in milliseconds.
 */
public static long getMp4Duration(File mp4File) throws IllegalStateException, IOException {
PlayerControl playerControl = PlayerFactory.createLightweightMPEG4Player();
playerControl.open(mp4File.getAbsolutePath());
long mili = playerControl.getDuration();
// int sec = (int) ((mili / 1000) % 60);
// int min = (int) ((mili / 1000) / 60);
// System.out.println("IBM Tookit result = " + min + ":" + sec);
return mili;
}

--

Связанный, независимый от языка, вопрос: Кто-либо знакомый с mp4 структурой данных?

10
задан Community 23 May 2017 в 12:00
поделиться

3 ответа

Mp4 - это контейнерный формат - чтобы определить продолжительность звука внутри, вы должны сначала проанализировать контент из контейнера. Вы можете извлечь содержимое файла mp4 с помощью isobox mp4parser .

Как только вы это сделаете, у вас будут необработанные аудиоданные. Если это один из поддерживаемых форматов в java (wav, mp3 и т. Д.), Вы можете просто открыть этот файл, как вы уже сделали это для wavs. Первоначально вы, вероятно, извлечете звук в отдельный файл для простоты и облегчения отладки. Когда это работает, вы можете выполнить извлечение в режиме реального времени - вы реализуете InputStreamFilter, который извлекает аудиоконтент из mp4 на лету, поэтому никаких дополнительных внешних файлов не требуется.

IBM Alphaworks имеет чистую библиотеку декодера java MP4, но, возможно, это излишек для ваших текущих потребностей.

14
ответ дан 3 December 2019 в 17:57
поделиться

Xuggler ( http://www.xuggle.com/xuggler/ ) предоставляет лучшую Java-обертку для FFMPEG, которую я видел - она позволит вам декодировать изображения практически из любого файла, а затем делать с ними все, что вам нравится.

8
ответ дан 3 December 2019 в 17:57
поделиться

Вы не указали, что вы хотите сделать. Если вы хотите просто проигрывать файлы, то можно использовать MPlayer и управлять им удаленно через ProcessBuilder API и stdio.

0
ответ дан 3 December 2019 в 17:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: