当前位置: 首页 > 面试题库 >

是否有用于mp4文件的Java API?

太叔高义
2023-03-14
问题内容

可以使用此mp3SPI支持来处理mp3文件,但找不到与mp4文件类似的东西。

任何帮助,将不胜感激。

-更新

我想要做的就是获取文件的大小,就像我使用以下代码处理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;
}

-


问题答案:

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

完成此操作后,您将获得原始音频数据。如果它是Java支持的格式之一(wav,mp3等),则可以像打开wavs一样打开该文件。最初,为了简单起见和调试方便,您可能会将音频提取到单独的文件中。在这种情况下,您可以进行内联提取-
实现一个InputStreamFilter,可以即时从mp4中提取音频内容,因此不需要其他外部文件。

IBM Alphaworks提供了一个纯Java
MP4解码器库,但是对于您当前的需求而言,它可能会显得过高。



 类似资料:
  • 问题内容: 我想阅读Java代码中的pom.xml。我想知道是否有一个用于此的库,所以我可以为不同部分(例如,Dependenes,插件等)提供一个迭代器。我想避免手动构建解析器。 问题答案: 您可以尝试使用MavenXpp3Reader,它是maven- model的 一部分。样例代码:

  • 以下是从mp4文件中提取内容和元数据的程序 - import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.Metadata; impor

  • 问题内容: 我的问题是,我想使用在JAVA中实现的通用解析器来解析不同类型的二进制文件。也许使用解析器读取的配置文件来描述文件格式,或者创建Java类来根据某种解析规则来解析文件。 我已经在互联网上进行了很多搜索,但是在该主题上几乎找不到任何内容。 我发现的只是与编译器生成器(Jay,Cojen等)打交道的东西,但我认为我不能用它们来生成一些用于解析二进制文件的东西。但是在这个假设上我可能是错的。

  • 问题内容: 有谁知道一个允许我解析.PO文件的Java库?我只想创建ID和值的映射,以便将它们加载到数据库中。 问题答案: 根据Java gettext实用程序手册, 您可以使用程序将PO文件转换为ResourceBundle类,并使用java.util.ResourceBundle或gnu.gettext.GettextResource读取它- 我认为这是最有效的方法。Gettext-commo

  • 问题内容: 是否有用于解析绑定区域文件的python库?基本上,这将有助于添加/删除区域和记录。即使有人手动修改区域文件,这也需要起作用,因此每次覆盖区域文件都不是解决方案。 问题答案: 我无法将bicop用于此类经典区域文件: 我将看看dnspython

  • 问题内容: 我正在寻找Python的技术或模板系统,以将输出格式化为简单文本。我需要的是它将能够遍历多个列表或字典。如果我能够将模板定义为单独的文件(例如output.templ),而不是将其硬编码为源代码,那就太好了。 作为简单的示例,我想要实现的是,我们有变量,以及 在模板中运行,输出如下所示: 这该怎么做?谢谢。 问题答案: 有很多用于python的模板引擎:Jinja,Cheetah,Ge