可以使用此处理 M3 文件mp3 SPI 支持 http://www.javazoom.net/mp3spi/sources.html,但我没有找到类似于 mp4 文件的内容。
任何帮助,将不胜感激。
--UPDATE
我想要做的是获取文件的大小,就像我使用以下代码处理波形文件一样:
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));
--ANSWER
这是使用@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数据结构吗? https://stackoverflow.com/questions/3057157/anyone-familiar-with-mp4-data-structure
Mp4 是一种容器格式 - 为了能够找到内部音频的持续时间,您必须首先解析容器中的内容。您可以使用以下命令提取 mp4 文件的内容isobox mp4解析器 http://code.google.com/p/mp4parser/.
完成此操作后,您就获得了原始音频数据。如果它是 java 支持的格式之一(wav、mp3 等),那么您可以像打开 wav 一样打开该文件。最初,为了简单起见和更容易调试,您可能会将音频提取到单独的文件中。当此功能正常工作时,您可以进行内联提取 - 您实现一个从 mp4 中动态提取音频内容的 InputStreamFilter,因此不需要额外的外部文件。
IBM Alphaworks http://www.alphaworks.ibm.com/tech/tk4mpeg4有一个纯 java MP4 解码器库可用,但它对于您当前的需求来说可能有点过头了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)