急:两个wav音频文件合成一串二进制流输出

zhouyongli41 2010-01-08 01:58:36
我把两个wav音频文件合成一串二进制流输出,第二个音频文件除去头部信息是在位置44吗?
我的测试结果只有sound1.wav的声音,哪合并出错了

FileStream fs = new FileStream(Server.MapPath("sound/sound1.wav"), FileMode.Open, FileAccess.Read);
byte[] arrfile = new byte[fs.Length];
fs.Read(arrfile, 0, arrfile.Length);
//
FileStream fs1 = new FileStream(Server.MapPath("sound/sound2.wav"), FileMode.Open, FileAccess.Read);
byte[] arr = new byte[fs1.Length - 44];
fs1.Position = 44;//去除头部信息
fs1.Read(arr, 0, arr.Length);

byte[] sound = new byte[arrfile.Length+arr.Length];

arrfile.CopyTo(sound, 0);
arr.CopyTo(sound, arrfile.Length);

fs.Close();
fs1.Close();
Response.Clear();
Response.ContentType = "audio/x-wav wav";
Response.BinaryWrite(sound);
...全文
511 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
liushengmz 2010-01-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 talesten 的回复:]
你的arr一直没被赋值,怎么会有sound2啊
[/Quote]

兄弟,arr被赋值了吧?
jshi123 2010-01-10
  • 打赏
  • 举报
回复
改写一下头部信息就好了
FileStream fs = new FileStream(Server.MapPath("sound/sound1.wav"), FileMode.Open, FileAccess.Read);
byte[] arrfile = new byte[fs.Length];
fs.Read(arrfile, 0, arrfile.Length);
//
FileStream fs1 = new FileStream(Server.MapPath("sound/sound2.wav"), FileMode.Open, FileAccess.Read);
byte[] arr = new byte[fs1.Length - 44];
fs1.Position = 44;//去除头部信息
fs1.Read(arr, 0, arr.Length);

byte[] sound = new byte[arrfile.Length + arr.Length];

arrfile.CopyTo(sound, 0);
arr.CopyTo(sound, arrfile.Length);

BinaryWriter writer = new BinaryWriter(new MemoryStream(sound));
writer.Seek(4, SeekOrigin.Begin);
writer.Write((int)(fs.Length + fs1.Length - 8 - 44));
writer.Seek(40, SeekOrigin.Begin);
writer.Write((int)(fs.Length + fs1.Length - 44 - 44));
writer.Close();

fs.Close();
fs1.Close();
Response.Clear();
Response.ContentType = "audio/x-wav wav";
Response.BinaryWrite(sound);
Response.End();
sundotLei 2010-01-09
  • 打赏
  • 举报
回复
以前做语音验证码的时候用到过,但是不是直接生成文件,只是生成流直接输出,wmp能够读取并播放wav流
zhouyongli41 2010-01-09
  • 打赏
  • 举报
回复
有几段散的wav语音,我想连续播放能用其他方法实现也行,不过用mediaplayer播放列表wpl,asx文件实现的我功能好像不方便
zhouyongli41 2010-01-09
  • 打赏
  • 举报
回复
这里有个两个wav生成一个wav音频文件的介绍
http://www.codeproject.com/KB/audio-video/Concatenation_Wave_Files.aspx

如何不生成文件,只生成文件流,response输出
xycit 2010-01-09
  • 打赏
  • 举报
回复
up
zhouyongli41 2010-01-09
  • 打赏
  • 举报
回复
我只要生成流直接输出
zhouyongli41 2010-01-09
  • 打赏
  • 举报
回复
高手帮忙给些资料也行了,两个音频文件生成一个音频文件我是有了
mngzilin 2010-01-09
  • 打赏
  • 举报
回复
不是44是58

而且合并后的wav文件头中相应的信息也要修改才行
zhouyongli41 2010-01-08
  • 打赏
  • 举报
回复
没人帮忙
zhouyongli41 2010-01-08
  • 打赏
  • 举报
回复
可能是重新合并wav格式有问题,哪位弄过啊,急
TalesTen 2010-01-08
  • 打赏
  • 举报
回复
杀手锏: 循环arrfile和arr给sound赋值试试
messi_yang 2010-01-08
  • 打赏
  • 举报
回复
沒有做過 。幫頂哈 ···
zhouyongli41 2010-01-08
  • 打赏
  • 举报
回复
再顶
flyerwing 2010-01-08
  • 打赏
  • 举报
回复
定位到文件1的结尾把文件2追加上去。
人间太皮 2010-01-08
  • 打赏
  • 举报
回复
帮顶一下,不会搞....
TalesTen 2010-01-08
  • 打赏
  • 举报
回复
你的arr一直没被赋值,怎么会有sound2啊
zhouyongli41 2010-01-08
  • 打赏
  • 举报
回复
Up,有人做过吗

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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