【问题标题】:How to play GSM 6.10 compressed files in Java如何在 Java 中播放 GSM 6.10 压缩文件
【发布时间】:2014-11-13 23:50:21
【问题描述】:

你能告诉我如何修改这些代码行来播放一些 GSM 文件吗?

File audioFile = new File(audioFilePath);
AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile);
AudioFormat format = audioStream.getFormat();
AudioFormat format = audioStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
Clip audioClip = (Clip) AudioSystem.getLine(info);
audioClip.open(audioStream);
audioClip.start();
audioClip.close();
audioStream.close();

谢谢

【问题讨论】:

    标签: java swing audio gsm tritonus


    【解决方案1】:

    您需要为 GSM 安装 java sound service provider。 FFSampledSP 可以工作(通过FFmpeg)。

    安装它,然后,要获得 PCM 流,您可能需要像这样转换 GSM 流:

        AudioInputStream gsmStream = AudioSystem.getAudioInputStream(new File("audio.gsm"));
        AudioInputStream pcmStream = AudioSystem.getAudioInputStream(AudioFormat.Encoding.PCM_SIGNED, gsmStream);
    

    限制:FFSampledSP 使用本机库,仅适用于 Windows 和 OS X。任何其他平台可能需要大量工作。

    或者,您可能想试试GSM 6.10 tritons plugin

    【讨论】:

    • 非常感谢,几天前我发布了这个关于如何使用 tritons 插件的问题。然而,好几天没有人回复,因此我再次编辑了这个问题,删除了那个位。你知道如何使用 tritons 库播放音频吗? (我只找到了编码音频的源代码)谢谢
    • 我自己没有使用过 tritons,但我的猜测是它只需要与其他 tritons jar 一起出现在您的类路径中。那么您至少应该能够打开 GSM 流。将其转换为 PCM 流(如上所示),然后您应该可以播放了。
    • 这就是我所说的Tritons Encoder我怎样才能适应我的需要
    • 您需要在类路径中放置正确的 jar。只需按照tritonus.org/plugins.html 上针对 GSM 插件的说明进行操作即可。那么您在问题中发布的代码应该可以工作 - 除了您可能必须按照我在回答中指出的方式转换内容。
    • 如果简单的AudioFormat.Encoding.PCM_SIGNED 不起作用,您可能需要这样的东西:AudioInputStream pcmStream = AudioSystem.getAudioInputStream(new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 44100f, 16, 1, 2, 44100f, true), gsmStream); - 稍微详细一点...
    猜你喜欢
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多