加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

有没有Java API的mp4文件?

发布时间:2020-12-15 00:25:41 所属栏目:Java 来源:网络整理
导读:Mp3文件可以使用这个 mp3 SPI support来处理,但是我没有找到类似于mp4文件的东西. 任何帮助将不胜感激. –update 我想做的是获取文件的大小,就像使用这个代码的wave文件一样: AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);A
Mp3文件可以使用这个 mp3 SPI support来处理,但是我没有找到类似于mp4文件的东西.

任何帮助将不胜感激.

–update

我想做的是获取文件的大小,就像使用这个代码的wave文件一样:

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;
}

相关,语言无关,问题:
Anyone familiar with mp4 data structure?

解决方法

Mp4是一种容器格式 – 为了能够在内部找到音频的持续时间,您必须首先从容器中解析出内容.您可以使用 isobox mp4parser提取mp4文件的内容.

完成之后,您将拥有原始的音频数据.如果它是java(wav,mp3等)支持的格式之一,那么你可以打开这个文件,就像已经为wav已经完成的那样.最初,您可能会将音频解压缩到一个单独的文件,为了简单起见,调试更简单.当这样工作时,您可以在线提取 – 您实现一个InputStreamFilter,即时从mp4中提取音频内容,因此不需要额外的外部文件.

IBM Alphaworks有一个纯Java MP4解码器库可用,但它可能是为您目前的需求过度.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读