【问题标题】:Detecting Audio File Bit Rate - Processing / Java检测音频文件比特率 - 处理/Java
【发布时间】:2020-05-13 17:10:01
【问题描述】:

尝试构建一个小应用程序,用于根据音频文件的某些属性对音频文件进行排序。已经设法使用 Minim 获取采样率和位深度,但在任何地方都找不到任何获取位率的东西?

如果需要的话,很高兴将程序转换为 Javascript,但只是迫切地想找到一种方法来检测给定文件的比特率。

编辑:尝试尝试根据文件大小形成一个方程,但也找不到检测 MP3 文件大小的方法。

【问题讨论】:

  • 您好 Charles,您提到您设法同时获取了采样率和比特率,但您无法获取比特率?你能纠正你的问题吗?我想你有采样率但需要比特率?您在使用 mp3 文件吗?
  • 抱歉澄清一下,我有采样率和位深度,只是没有位率。我正在使用 MP3 进行测试,稍后将转移到 WAV 和 AIF 等
  • 顺便说一下,如果建议的答案对您有用,请您遵循本指南并将其标记为已接受stackoverflow.com/help/someone-answers

标签: java audio processing


【解决方案1】:

您可以使用jaudiotagger

你需要下载jar,我设法从maven central得到它

转到 Sketch -> Add File... 并选择下载的 jar,它应该添加到您的草图文件夹中名为 code 的文件夹中。

假设您在名为 audio.mp3 的数据文件夹中放置了一个 mp3 文件,以下代码应该可以工作,在终端中打印出比特率。

import org.jaudiotagger.audio.mp3.*;
import org.jaudiotagger.audio.AudioFileIO;

void setup() {
  File f = new File(dataPath("audio.mp3"));
  try {
    MP3File mp3 = (MP3File) AudioFileIO.read(f);

    MP3AudioHeader audioHeader = mp3.getMP3AudioHeader();
    println("" + audioHeader.getBitRate());
  }
  catch(Exception e) {
    e.printStackTrace();
  }
}

JAudiotagger 支持多种文件格式,您可以为每一种格式使用相关的类和方法。

我建议你看看javadoc。不过请注意这些示例,the one I used 为了回答您的问题似乎有问题,正如您所看到的,我必须将 getAudioHeadergetMP3AudioHeader 交换。

【讨论】:

  • 谢谢你把我带到这个图书馆!看起来很适合这个欣赏它。但是,当尝试执行您的代码时,MP3File mp3 行出现“CannotReadException”错误。有点困惑,因为它加载文件很好!编辑认为我可能已经修复它实际上道歉
  • 好吧,有点奇怪,我无法让代码在 try/catch 之外工作,是否有可能将其放入函数中?
  • 当然你可以将代码移动到一个函数中,但你需要 try catch 来读取文件,以防它不存在或不可访问。我将整个代码从设置移动到方法 String getBitRate(String filename){...} 并且它工作正常。你到底想做什么?
猜你喜欢
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 2011-05-24
  • 2012-10-23
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多