2014-09-19 71 views
1

请您告诉我如何修改这些代码行以便能够播放一些GSM文件。如何在Java中播放GSM 6.10压缩文件

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(); 

感谢

回答

2

你需要安装一个用于GSM的Java完善的售后服务提供商。 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

+0

非常感谢,前几天我发布了关于如何使用tritons插件的问题。然而,没有人回复几天,因此我再次编辑了这个问题,删除了那一点。你知道如何使用tritons库来播放音频吗? (我发现只有源代码来编码音频)谢谢 – QGA 2014-09-26 12:37:17

+0

我自己并没有使用tritons,但我的猜测是,它只需要与其他tritons jar一起出现在你的classpath中。 然后,你应该至少能够打开GSM流。将其转换为PCM流(如上所示),然后您应该可以播放它。 – hendrik 2014-09-26 12:40:36

+0

这就是我正在谈论的[Tritons编码器](http://www.jsresources.org/examples/GSMEncoder.java.html)我如何适应它以满足我的需求 – QGA 2014-09-26 12:41:42