【问题标题】:Get byte stream from an audio file?从音频文件中获取字节流?
【发布时间】:2013-09-25 04:57:38
【问题描述】:

有没有办法从 Java 中的音频文件(尤其是 wav 文件)中获取音频流?

我正在尝试获取特定间隔的流,即从startTime 到endTime,其中startTime 不为零。例如,要获取 20 秒长的音频文件的 5 秒到 10 秒(5 秒持续时间)的音频流。

怎么做?

【问题讨论】:

    标签: java audio wav javasound


    【解决方案1】:

    您可以使用标准 Java 声音库:javax.sound.sampled。

    阅读 .wav 文件已在此处详细介绍,以及如何将字节转换为相应的帧。如果您检查右侧的“相关”,您将找到有关如何读取音频数据、一次一个缓冲区的价值以及如何遍历这些缓冲区并将字节转换为 PCM 数据的信息。

    假设您知道帧速率(例如 44100 fps),则只需计算音频数据的字节数或帧数。例如,在 44100 fps 的立体声 16 位编码中,每帧由 4 个字节组成,因此字节 (5 * 4 * 44100) 将是 5 秒点的开始,而 (10 * 4 * 44100) 将是10 秒的位置。

    Java 声音教程很难读。以下链接在标题“读取声音文件”下有一个非常有用的代码示例。 http://docs.oracle.com/javase/tutorial/sound/converters.html

    有一个注释行,内容如下 "// 在这里,对现在位于 audioBytes 数组中的音频数据做一些有用的事情..."

    这就是您计算字节数并从字节组装 PCM 数据的地方。

    【讨论】:

      【解决方案2】:

      这个应该可以帮助你:

      Java Wav 文件 IO http://www.labbookpages.co.uk/audio/javaWavFiles.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-12
        • 1970-01-01
        • 2021-09-18
        • 2016-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多