如何用程序把将2段wav文件混合成一段wav文件(200分)

  • 主题发起人 主题发起人 bg89
  • 开始时间 开始时间
B

bg89

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用程序把将2段wav文件拼接成一段wav文件,急
 
如果两段wav的声道,频率,位数都一样的话,直接相加就可以了。
 
www.ysza.com 原创作品里,wav合并控件.qq:171833017,email:dxmylove@yahoo.com.cn
 
白河愁:怎么相加啊,在程序可以实现吗?
 
procedure combind(f1, f2, f3: string);
var
ff1, ff2, ff: tmemorystream;
begin

ff1:= tmemorystream.create;
ff1.loadfromfile(f1);

ff2:= tmemorystream.create;
ff2.loadfromfile(f2);


ff:= tmemorystream.create;
ff.writebuffer(ff1.memory, ff1.size);
ff.writebuffer(ff2.memory, ff2.size);
ff.savetofile(f3);
ff.free;
ff1.free;
ff2.free;

end;
 
copy 1.wav 2.wav 3.wav
 
上面的方法不行的 wav 是有头结构的. 你看一下资料就很快明白了
不过麻烦的事还是有点多.

如:不同声道,不同 bps , 不同采样位数....

如果不用程序,可以用 COOL EDIT 来做.
 
相同的wav肯定是可以了,那44字节文件头只会产生一点轻微的声音,人类是感觉不出的
 
白河愁:ff1.size为零,程序运行不下去啊.
QSmile:我是相同格式的文件,是自己制作的.
 
ff1.size为0是你的wav问题
f1, f2是你要合的两个wav, f3是输出的wav
 
白河愁: ff.writebuffer(ff1.memory, ff1.size);
size有限制啊,48K就不行了.
 
memorystream不可能有size限制的,如果实在用,就换filestream
 
这么弄不行的,还是看看我的控件吧.http://www.ysza.com/download.htm
 
一生中最爱:你的控件要注册OCX,发布有问题的啊
 
看来是没人有好的解决的解决办法了:)
 
弄好头文件结构体
将2个头文件读出来
然后将生成地3个头文件,将文件大小相加,保存到文件
然后将2个文件的内容一次写入第3个文件

‘ size有限制啊,48K就不行了.’ 我想应该没有,我的文件几M,也能写入
 
不会有问题呀,你不会把怎么注册acitvex都不会吧
我的插件只要开发者注册一次就可以,客户机安装,是不需要找我注册的
 
看来这个问题也就这样了,买单吧,谢谢诸位了。
 
后退
顶部