为什么80%的码农都做不了架构师?>>>   

问题来源: http://www.cnblogs.com/del/archive/2008/10/25/1069523.html#1351197


unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses MMSystem;{合并两个 Wav 文件流的函数}
function ConWavStream(AWavStream1, AWavStream2: TStream; var ANewStream: TStream): Boolean;
typeTWavFormat = packed recordChunkID: array[0..3] of AnsiChar;     {'RIFF'}ChunkSize: Longword;                  {size-8}Format: array[0..3] of AnsiChar;      {'WAVE'}SubChunk1ID: array[0..3] of AnsiChar; {'fmt '}SubChunk1Size: Longword;              {hex10}AudioFormat: Word;                    {hex 01}NumOfChannels: Word;                  {1 mono, 2 stereo}SampleRate: Longword;                 {number of samples/sec}ByteRate: Longword;                   {samplerate* num of channels*bytes per (mono) sample}BytesperSample: Word;                 {size of (mono) sample}BitsPerSample: Word;                  {BytesperSample *8}SubChunk2ID: array[0..3] of AnsiChar; {'data'}SubChunk2Size: Longword;              {number of data bytes}end;
varvWavFormat1: TWavFormat;vWavFormat2: TWavFormat;vChunkSize1, vChunkSize2: Integer;
beginResult := False;if AWavStream1.Read(vWavFormat1, SizeOf(TWavFormat)) <> SizeOf(TWavFormat) then Exit;if AWavStream2.Read(vWavFormat2, SizeOf(TWavFormat)) <> SizeOf(TWavFormat) then Exit;if vWavFormat1.ChunkID <> 'RIFF' then Exit;if vWavFormat1.SubChunk2ID <> 'data' then Exit;vChunkSize1 := vWavFormat1.SubChunk2Size;vChunkSize2 := vWavFormat2.SubChunk2Size;vWavFormat1.ChunkSize := 0;vWavFormat1.SubChunk2Size := 0;vWavFormat2.ChunkSize := 0;vWavFormat2.SubChunk2Size := 0;if not CompareMem(@vWavFormat1, @vWavFormat2, SizeOf(TWavFormat)) then Exit; {格式不同}vWavFormat1.ChunkSize := vChunkSize1 + vChunkSize2 + SizeOf(vWavFormat1) - 8;vWavFormat1.SubChunk2Size := vChunkSize1 + vChunkSize2;ANewStream.Write(vWavFormat1, SizeOf(TWavFormat));ANewStream.CopyFrom(AWavStream1, vChunkSize1);ANewStream.CopyFrom(AWavStream2, vChunkSize2);Result := True;
end; { ConWavStream End}varWavStream: TStream;{合并两个资源流; 之前要在资源中分别加载两个 WAV 文件, 并分别命名: wav1、wav2}
procedure TForm1.FormCreate(Sender: TObject);
varrs1,rs2: TResourceStream;
beginrs1 := TResourceStream.Create(HInstance, 'wav1', RT_RCDATA);rs2 := TResourceStream.Create(HInstance, 'wav2', RT_RCDATA);WavStream := TMemoryStream.Create;ConWavStream(rs1, rs2, WavStream);rs1.Free;rs2.Free;
end;procedure TForm1.FormDestroy(Sender: TObject);
beginWavStream.Free;
end;{循环播放}
procedure TForm1.Button1Click(Sender: TObject);
beginsndPlaySound(TMemoryStream(WavStream).Memory, SND_ASYNC or SND_MEMORY or SND_LOOP);
end;{暂停}
procedure TForm1.Button2Click(Sender: TObject);
beginsndPlaySound(nil, 0);
end;end.

转载于:https://my.oschina.net/hermer/blog/319358

合并两个 Wav 文件流的函数 - 回复 刘文强 的问题相关推荐

  1. python两个csv表数据合并_python – 根据列中的数据合并两个CSV文件

    我有两个csv文件,如下所示. CSV1 data13 data23 d main_data1;main_data2 data13 data23 data12 data22 d main_data1; ...

  2. java解析odt_java – 从代码合并两个.odt文件

    如何合并两个.odt文件?手动执行,打开每个文件并复制内容将会起作用,但是是不可行的. 我已经尝试过odttoolkit Simple API(simple-odf-0.8.1-incubating) ...

  3. tar 合并两个tar文件

    tar 合并两个tar文件 There is no nutrition in the blog content. After reading it, you will not only suffer ...

  4. c语言合并wav文件,如何将两个WAV文件合并/合并为一个WAV文件?

    小编典典 如果直接使用wav文件的字节,则可以在任何编程语言中使用相同的策略.对于此示例,我将假设两个源文件具有相同的比特率/数字通道,并且具有相同的长度/大小.(否则,您可能可以在开始合并之前对其进 ...

  5. java wav合并_java – 如何将两个wav文件合并/合并到一个wav文件中?

    如果直接使用wav文件的字节,则可以在任何编程语言中使用相同的策略.对于这个例子,我假设两个源文件具有相同的比特率/ numchannels并且长度/大小相同. (如果没有,你可以在开始合并之前编辑它 ...

  6. Python文件操作小案例:交替合并两个记事本文件

    问题描述:编写程序,接收两个记事本文件名字,然后交替把两个记事本文件中的行合并到result.txt文件中,你一行来我一行,最后把行数较多的文件剩余内容全部写入目标文件. 参考代码: -------- ...

  7. 合并两个xml文件 php_怎样合并两个pdf文件

    Pdf文件我们常常在办公中用到,有很多朋友在网上手机资料后不知道怎么把它加入到pdf文件中,有些朋友可能会想到复制粘贴,可是pdf文件是不能够直接进行编辑的,那么应该怎么才能把pdf文件合并在一起呢? ...

  8. 用python合并两个csv文件的实现方法,以及对表头和空行的处理

    在做两个csv文件合并时,其实挺简单,但是中间遇到的问题比较多,所以统一在这里总结一下踩过的坑,希望可以给到大家帮助. 首先说一下,一开始使用的办法,刚开始希望通过第一个换行'\n'地方往后去合并,这 ...

  9. 两个音轨合并_Okoker MP3 Joiner合并两个音频文件的方法

    Okoker MP3 Joiner是一款可以在电脑上合并音乐的软件,我们可以将多个音乐片段加载到软件中然后合并成为一首歌曲或者可以将很多歌曲中的精彩部分制作成串烧,软件的功能强大,使用起来也比较简单, ...

最新文章

  1. [UWP] 用 AudioGraph 来增强 UWP 的音频处理能力——AudioFrameInputNode
  2. 60%的安卓APP存在漏洞,平均每个有39个漏洞
  3. 续: [转]Oracle 表空间与数据文件
  4. SQL获取刚插入的记录的自动增长列ID的值
  5. Redis数据类型操作(五) —— Sorted Set
  6. 算法竞赛入门经典(第二版) | 例题4-4 信息解码 (紫皮书牛啤!)(UVa213,Message Decoding)
  7. 图像处理之基础---特征向量的 几何意义
  8. 与素数有关的一些性质及证明(一)
  9. python scrapy框架 简书_Python的Scrapy框架
  10. c语言从入门到精通pdf 百度云,c语言从入门到精通PDF
  11. spoon mysql教程_Kettle-Spoon入门示例
  12. Cocos2d-x组件的创建与挂载
  13. 七、CICSO设备 路由器
  14. #Ant Design# 设计规范 设计原则
  15. 所有科技人员是懂计算机的,指出违反什么规律.PDF
  16. 2008 php5.6 mysql_MySQL_win2008 R2 WEB环境配置之MYSQL 5.6.22安装版安装配置方法,版本选择 因为MySql的版本越来 - phpStudy...
  17. 3.2-上位机与下位机的“私有协议”通信构架设计
  18. alias常见小问题汇总20例
  19. binutils java_一起编制binutils和gcc的配方?
  20. 常用到的身份证,验证码,密码验证

热门文章

  1. 洛谷P1088 火星人
  2. Varnish配置,Error 503解决之道
  3. JavaScript中的参数传递
  4. go语言基础(三)切片,map
  5. 从张小平这样登月人才的离职事件,看团队期望管理的重要性
  6. 教你用Vue 做一个简单的比较两个数字的大小的页面
  7. 转载----孙振耀退休感言
  8. java 结束循环_java中结束循环的方法
  9. Jsdelivr CDN 加速服务又被 DNS 污染了(附临时解决方案)
  10. Python爬虫抓取去哪儿网景点信息告诉你国庆哪儿最堵