本文实例讲述了delphi制作wav文件的方法。分享给大家供大家参考。具体如下:
这里delphi用waveIn...函数制作wav文件
具体代码如下:
//使用窗口接受音频设备发出的消息: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); protected procedure WndProc(var m: TMessage); override; end; var Form1: TForm1; implementation {$R *.dfm} uses MMSystem; var whIn1,whIn2, whOut: TWaveHdr; hWaveIn,hWaveOut: HWAVE; fmt: TWaveFormatEx; buf1,buf2,SaveBuf: TBytes; procedure TForm1.FormCreate(Sender: TObject); begin Button1.Caption := '开始录音'; Button2.Caption := '停止录音'; Button3.Caption := '播放录音'; end; //开始录音 procedure TForm1.Button1Click(Sender: TObject); begin {指定要录制的格式} fmt.wFormatTag := WAVE_FORMAT_PCM; fmt.nChannels := 2; fmt.nSamplesPerSec := 22050; fmt.nAvgBytesPerSec := 88200; fmt.nBlockAlign := 4; fmt.wBitsPerSample := 16; fmt.cbSize := 0; SaveBuf := nil; {清除已录制的内容} if waveInOpen(@hWaveIn, WAVE_MAPPER, @fmt, Handle, 0, CALLBACK_WINDOW) = 0 then begin SetLength(buf1, 1024*8); SetLength(buf2, 1024*8); whIn1.lpData := PAnsiChar(buf1); whIn1.dwBufferLength := Length(buf1); whIn1.dwBytesRecorded := 0; whIn1.dwUser := 0; whIn1.dwFlags := 0; whIn1.dwLoops := 0; whIn1.lpNext := nil; whIn1.reserved := 0; whIn2.lpData := PAnsiChar(buf2); whIn2.dwBufferLength := Length(buf2); whIn2.dwBytesRecorded := 0; whIn2.dwUser := 0; whIn2.dwFlags := 0; whIn2.dwLoops := 0; whIn2.lpNext := nil; whIn2.reserved := 0; waveInPrepareHeader(hWaveIn, @whIn1, SizeOf(TWaveHdr)); waveInPrepareHeader(hWaveIn, @whIn2, SizeOf(TWaveHdr)); waveInAddBuffer(hWaveIn, @whIn1, SizeOf(TWaveHdr)); waveInAddBuffer(hWaveIn, @whIn2, SizeOf(TWaveHdr)); waveInStart(hWaveIn); end; end; //停止录音 procedure TForm1.Button2Click(Sender: TObject); begin waveInStop(hWaveIn); waveInUnprepareHeader(hWaveIn, @whIn1, SizeOf(TWaveHdr)); waveInUnprepareHeader(hWaveIn, @whIn2, SizeOf(TWaveHdr)); waveInClose(hWaveIn); end; //播放录音 procedure TForm1.Button3Click(Sender: TObject); begin whOut.lpData := PAnsiChar(SaveBuf); whOut.dwBufferLength := Length(SaveBuf); whOut.dwBytesRecorded := 0; whOut.dwUser := 0; whOut.dwFlags := 0; whOut.dwLoops := 1; whOut.lpNext := nil; whOut.reserved := 0; waveOutOpen(@hWaveOut, WAVE_MAPPER, @fmt, Handle, 0, CALLBACK_WINDOW); waveOutPrepareHeader(hWaveOut, @whOut, SizeOf(TWaveHdr)); waveOutWrite(hWaveOut, @whOut, SizeOf(TWaveHdr)); end; procedure TForm1.WndProc(var m: TMessage); var ordLen: Integer; begin inherited; case m.Msg of {处理录音消息} MM_WIM_OPEN: ; {此消息只携带了设备句柄} MM_WIM_CLOSE: ; {此消息只携带了设备句柄} MM_WIM_DATA: begin {此消息携带了设备句柄和 WaveHdr 指针(LParam)} {保存录制的数据} ordLen := Length(SaveBuf); SetLength(SaveBuf, ordLen + PWaveHdr(m.LParam).dwBytesRecorded); CopyMemory(Ptr(DWORD(SaveBuf)+ordLen), PWaveHdr(m.LParam).lpData, PWaveHdr(m.LParam).dwBytesRecorded); {继续录制} waveInAddBuffer(hWaveIn, PWaveHdr(m.LParam), SizeOf(TWaveHdr)); end; {处理播放消息} MM_WOM_OPEN: ; {此消息只携带了设备句柄} MM_WOM_CLOSE: ; {此消息只携带了设备句柄} MM_WOM_DONE: begin {此消息携带了设备句柄和 WaveHdr 指针(LParam)} waveOutUnprepareHeader(hWaveOut, PWaveHdr(m.LParam), SizeOf(TWaveHdr)); waveOutClose(hWaveOut); end; end; end; end.
希望本文所述对大家的Delphi程序设计有所帮助。
本文向大家介绍java读取wav文件(波形文件)并绘制波形图的方法,包括了java读取wav文件(波形文件)并绘制波形图的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java读取wav文件(波形文件)并绘制波形图的方法。分享给大家供大家参考。具体如下: 因为最近有不少网友询问我波形文件读写方面的问题,出于让大家更方便以及让代码能够得到更好的改进,我将这部分(波形文件的读写)代码开源
问题内容: 我有一个几分钟的.wav文件,我想分割成10秒的另一个.wav文件。 到目前为止,这是我的python代码: 印刷产量: 我知道这是框架列表。我如何为该列表中的每个元素制作一个wav文件(第一个.wav文件将是?Python的模块尚不清楚如何使用框架创建.wav文件。 编辑:这是一个重复的问题,如何在python中将音频文件(wav格式)拼接为1秒拼接? 但是,如果某人的答案不需要,我
问题内容: 我有一个用于音乐和语音分析的PyQt plus pyqtgraph程序,我想绘制一个wav文件的频谱(使用scipy python软件包计算)。我可以在matplotlib中做到这一点,但是由于matplotlib的性能,我需要切换到pyqtgraph,但是我找不到任何一致的方法来将scipy.signal.spectrogram的输出绘制到pyqtgraph中 谢谢! 问题答案: S
基于StackExchange的代码,我编写了打开wav文件的代码。wav文件本身是一个有效的文件,因为它可以与我的Python程序正常配合使用。但是javascript函数不起作用。声音文件与我的html文件位于同一文件夹中。 任何帮助都将不胜感激。
本文向大家介绍python使用wxPython打开并播放wav文件的方法,包括了python使用wxPython打开并播放wav文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python使用wxPython打开并播放wav文件的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。
我一直在开发一个应用程序,需要播放声音,并有大量的声音文件。wav格式,大小接近1GB。我已经按照官方文件制作了扩展文件。 首先我做了一个决定。压缩0次的压缩文件,全部。wav文件位于该文件下(没有任何子文件夹。即main.1.package包含所有声音文件)。然后我重新命名了。将文件夹压缩到。obb。然后我把它放在。共享存储obb文件夹下apps文件夹中的obb文件(com.moinul.app