用java可以实现将vox格式音频文件转换成wav格式音频文件,请求指导

ciazealee 2010-12-13 12:04:06
还有想知道,vox文件有文件头吗,网上查了,这方面的信息很少,如果有的话怎么用java读取
以下是自己下的demo

public class Test {

static float sampleRate = 6000.0F; // 每秒的样本数
static int sampleSizeInBits = 4; // 每个样本中的位数
static int channels = 1; // 声道数(单声道 1 个,立体声 2 个)
static boolean signed = true; // 指示数据是有符号的,还是无符号的
static boolean bigEndian = false; // 指示是否以 big-endian 字节顺序存储单个样本中的数据(false 意味着 little-endian)


public static void trans() throws Exception{
File outFile = new File("F:/123.wav");
RandomAccessFile file = new RandomAccessFile("F:/1234123.v3", "r");
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

byte tempBuffer[] = new byte[10000];
while (true) { //读取10000个数据
int cnt = file.read(tempBuffer, 0, tempBuffer.length);
if (cnt > 0) { //保存该数据
byteArrayOutputStream.write(tempBuffer, 0, cnt);
}else {
byteArrayOutputStream.close();
break;
}
}

AudioFormat audioFormat = new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
byte audioData[] = byteArrayOutputStream.toByteArray();
InputStream byteArrayInputStream = new ByteArrayInputStream(audioData);
AudioInputStream audioInputStream = new AudioInputStream(byteArrayInputStream, audioFormat, audioData.length / audioFormat.getFrameSize());

AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, outFile);
System.out.println("success");
}

/**
* @param args
*/
public static void main(String[] args) throws Exception{
Test.trans();
}

}


关于vox文件有24k和32k的,具体不是很懂,转换完成的文件杂声很大,想请了解这方面的人指导下,怎么才能成功转换,先谢过了!
...全文
531 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
HuoYun001 2012-08-20
  • 打赏
  • 举报
回复
楼上说的对,但如何解决啊
lca_smile 2011-07-07
  • 打赏
  • 举报
回复
上面的代码只是直接给文件换了个文件名,转换后的文件不能播放的
mouse212618 2010-12-17
  • 打赏
  • 举报
回复
如何去你的资源?
sgh168 2010-12-15
  • 打赏
  • 举报
回复
到我的资源里面去看吧,我写了实现

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧