《=======两个关于音频的问题(400分相送——本人所有财产)=======》

wangfanreal 2003-12-08 10:07:58
1.如何在打开mp3和wav文件的同时显示整个文件的波形(特别是mp3文件)。
2.如何实现mp3和wav文件的变速播放,即“变速不变调”。国外倒是有个“mp3-wav-speed-slow”的软件源码,但是要花钱买。

在下恭迎各位高手指点。邮件地址:wangfanreal@hotmail.com
...全文
18 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangfanreal 2003-12-11
  • 打赏
  • 举报
回复
继续期待中......
wangfanreal 2003-12-09
  • 打赏
  • 举报
回复
我左看,右看,上看,下看,原来每个问题都不简单!
flora1984 2003-12-09
  • 打赏
  • 举报
回复
哇 hongqi162(失踪的月亮) 好厉害,学习学习 ^_^
hongqi162 2003-12-08
  • 打赏
  • 举报
回复
http://www.zjbbs.he.cninfo.net/softdown/sort.asp?typeid=50

这里有第三方控件你下一个装上试一试
wangfanreal 2003-12-08
  • 打赏
  • 举报
回复
谢谢 hongqi162(失踪的月亮)!那MP3又如何处理呢?和wav一样吗?
hongqi162 2003-12-08
  • 打赏
  • 举报
回复
首先你可以要分析wave的格式,看他的采样比特,和通道;
如:16比特,单声道,那么两个字节代表一个音频数据,也是我们要画的
画法如下:(这是我的一个程序中显示wave的一段程序)
procedure TPcmEdit.PrintPcm(ACanvas:TCanvas;AWidth,Aheight:integer);
var
i,j,ZZ,iNow,iBegin:integer;
iOldPos:Longint;
begin
with ACanvas do
begin
//画矩形框
Brush.Color:=clBlack;
FillRect(RECT(0,0,AWidth,Aheight));
MoveTo(0,Aheight div 2);
Pen.Color:=clLime ;
LineTo(AWidth,Aheight div 2);
//初始化读数据状态
iOldPos:=FMemPcmFile.Position;
GoToBegin;
FBuffBegin:=0;
FBuffSize:=0;
MoveTo(0,Aheight div 2);
ZZ:=GetFileSize div AWidth;
iNow:=0;
while FBuffBegin+FBuffSize<GetFileSize do
begin
iBegin:=iNow;
ReadBuffer(Min(GetFileSize-FMemPcmFile.Position,MaxBuffSize));
for i:=0 to AWidth-1 do
begin
if i*zz<=FBuffSize then inc(iNow)
else Break;
for j:=0 to ZZ-1 do
begin
if i*ZZ+j<=FBuffSize then
LineTo(iBegin+i,GetPcmToWavByte(FPcmBuffer[i*ZZ+j+1]))
else Break;
end;
end;
end;
GoToPos(iOldPos);//还原流的状态
end;
end;
wangfanreal 2003-12-08
  • 打赏
  • 举报
回复
上面仁兄的方法得走两个过程,太慢了!
Haofei 2003-12-08
  • 打赏
  • 举报
回复
先用XAudio组件将MP3转成Wave,再用Wave一样的处理办法就行了。
wangfanreal 2003-12-08
  • 打赏
  • 举报
回复
对不起!我不知道是哪一个第三方控件?
CDSoftwareWj 2003-12-08
  • 打赏
  • 举报
回复
学习 hehe^^

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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