如题,要源码示例。

解决方案 »

  1.   

    我只知道WAV格式的波形显示.
    我有一个例子子,源码很长(用API).
    要不, 我 E-mail 给你.
      

  2.   

    Bass,我用过了,很好,有带DEMO。还可以设置波形,就像WINAMP一样。波形都可以贴图http://www.un4seen.com/
    给我加分。
      

  3.   

    我不想用三方控件..TO:  cmain83(龙行天下2008)[email protected]
      

  4.   

    因该对你有用
      波形图和WAV信息    
        
    波形图和WAV信息unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, ExtCtrls;typeTPCMWaveHeader = recordrID: array[0..3] of char; // 'RIFF' 标志rLen: longint; // 文件长度wID: array[0..3] of char; // 'WAVE' 标志fId: array[0..3] of char; // 'fmt '标志 以空格结束(fID[3]:=Chr($20);)fLen: longint; // 过度字节(不定)wFormatTag: word; // 格式字节(过度字节为PCM形式的声音数据)nChannels: word; // 通道数 单声道=1, 双声道=2 }nSamplesPerSec: longint; // 采样频率 (每秒样本数),表示每个通道的播放速度nAvgBytesPerSec: longint; // 波形音频数据传送速度(值:通道数X每秒数据位数X每// 样本的数据位数/8。播放软件利用根据此值估计缓// 冲区的大小)nBlockAlign: word; // 数据块的调整数(按字节计算),值为通道数*没样本的数据位值/8。// 播放软件需要一次处理多个该值大小的字节数据,以便// 将其值用于缓冲区的调整。nBitsPerSample: word; // 每样本数据位数,表示每个声道中各个样本的数据位// 数。如果有多个声道,对每个声道而言,样本大// 小都一样 8 or 16dId: array[0..3] of char; // 'data' 标志dLen: longint; // 语音数据长度end;TForm1 = class(TForm)Button1: TButton;Memo1: TMemo;Button2: TButton;Button3: TButton;Image1: TImage;procedure Button2Click(Sender: TObject);procedure FormCreate(Sender: TObject);privatefilename: string;pcm: TPCMWaveHeader;Data: array[0..80 * 10240] of Byte;procedure PrintPcm;procedure PrintData;public{ Public declarations }end;varForm1 : TForm1;implementation{$R *.DFM}procedure TForm1.PrintPcm;begin// memo1.lines.add('FileName:' + Filename);memo1.lines.add('RIFF:' + pcm.rID);memo1.lines.add('RLEN:' + inttostr(pcm.rLen));memo1.lines.add('WAVE:' + pcm.wID);memo1.lines.add('fmt:' + pcm.fId);memo1.lines.add('Fixed:' + inttostr(pcm.fLen));memo1.lines.add('wFormatTag:' + inttostr(pcm.wFormatTag));memo1.lines.add('nChannels:' + inttostr(pcm.nChannels));memo1.lines.add('nSamplesPerSec:' + inttostr(pcm.nSamplesPerSec));memo1.lines.add('nAvgBytesPerSec:' + inttostr(pcm.nAvgBytesPerSec));memo1.lines.add('nBlockAlign:' + inttostr(pcm.nBlockAlign));memo1.lines.add('nBitsPerSample:' + inttostr(pcm.nBitsPerSample));memo1.lines.add('dLen:' + inttostr(pcm.dLen));end;procedure TForm1.Button2Click(Sender: TObject);variFileHandle : Integer;iFileLength : Integer;iBytesRead : Integer;Buffer : PChar;i, Size : Integer;beginiFileHandle := FileOpen(filename, fmOpenRead);iFileLength := FileSeek(iFileHandle, 0, 2) - FileSeek(iFileHandle, 0, 0);GetMem(Buffer, iFileLength + 1);iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength); //把文件读到bufferFileClose(iFileHandle);Move((Buffer)^, pcm, sizeof(pcm));Move((Buffer)^, Data, pcm.dLen);printpcm; //显示头信息printData; //画波形图FreeMem(Buffer);end;procedure TForm1.FormCreate(Sender: TObject);beginfilename := 'C:登录音.wav';end;procedure TForm1.PrintData;vari : Integer;beginfor i := 0 to pcm.dLen - 1 dobegin//memo1.lines.add(inttostr(Data[i]));Canvas.LineTo(i, Data[i])end;end;end.
     
       
      

  5.   

    有MP3格式的吗?
    WAV的已经解决.
    cmain83(龙行天下2008)给我的例子不错. 谢谢
    fire214(peter) 的方法也可以.可是, MP3格式的呢?有人知道吗?