这个是从github上面一个android speex开源项目修改封装而来,在项目中用于IM中的语音压缩和通话记录压缩。IM语音压缩不失真的情况下一分钟可以压缩到100K左右。
首先看使用方式。
编码解码音频文件示例代码:
void encodeAudioFile(File rawFile, File speexFile, ) {
SpeexFileConverter.encode(rawFile, speexFile, SpeexCompression.LOW_6Kbps, OggFormat.getDefault());
}
void decodeAudioFile(File speexFile, File dstFile) {
SpeexFileConverter.decode(speexFile, SpeexCompression.LOW_6Kbps, dstFile);
}
注意以上操作不要放在UI线程执行。
如果想直接播放转码成speex格式的文件,可以设计一个decoder接口来实现具体的speex解码。示例代码如下。
首先定义一个decoder接口备用:
public interface AudioDecoder {
void decode(File file, DecodeListener listener) throws IOException;
public interface DecodeListener {
boolean onDecoded(byte[] data, int offset, int length);
boolean onDecoded(short[] data, int offset, int length)