【问题标题】:Mixing or Combine some wav files [closed]混合或组合一些 wav 文件 [关闭]
【发布时间】:2014-05-03 13:53:10
【问题描述】:

请帮帮我。我有 3 个 wav 文件。 1.wav文件播放0-10秒,2.wav文件播放3-7秒,3.wav文件播放5-8.25秒。曲目正在同时播放。

如何在 C# 代码中将它们混合或组合成一个文件以获得 10 秒的 wav 文件长度?

不使用第三方库的目标平台 Windows Phone 或 Windows 8 Store App。 所有文件都相同:16 位、44100、立体声。

如何混合文件以正确定位 c# 代码中的时间?

【问题讨论】:

  • 您的目标平台是什么?控制台、Winforms、WPF、电话还是商店?
  • 这对于 Windows Phone 来说是可取的,但对于 Windows 8 应用商店来说是可能的。最好不使用第三方库。如何通过读取流中的文件来做到这一点?我意识到我必须留下一个头文件,并以某种方式连接所有三个文件的“数据”,但我不明白......
  • 这可能会对您有所帮助:stackoverflow.com/questions/6777340/…
  • 请不要在问题标题中包含有关所用语言的信息,除非没有它就没有意义。标记用于此目的。

标签: c# .net windows-phone wav


【解决方案1】:

有几种方法可以做到这一点。

我的建议是编写一个可以读取和写入波形文件的自定义波形类,因为与其他一些音乐文件不同,波形文件的主要信息存储在其标题中。

这里是详细的波形文件格式规范。 https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

绕过痛苦解码的另一种方法是使用第三方库,例如NAudio

【讨论】:

  • 谢谢你的例子,但它是一个串联的例子。我需要它来混合文件。我阅读了有关 wav 格式的信息,但我不明白该怎么做……您可以向我详细解释一下吗?所有文件都相同:16 位、44100、单声道。我看了第一个文件的标题,然后怎么办?三个文件中的数据如何混合?
  • 你需要一个BinaryReader 来读取输入流。在混合方面,这里有一个简单的算法。请看这个答案here
  • 开始有点明白了,但是现在还不清楚如何混音一样,1.wav文件播放0-10秒,2.wav文件播放3-7秒,和 3.wav 文件从 5 到 8.25 秒播放?添加静音?
  • 从三个波形文件中读取所有样本后,给定字节采样率和采样率,您可以创建一个新列表。通过从原始 wav 文件或混合数据添加数据,您可以创建新样本。沉默就是死0,沉默多长时间取决于你在样本中连续输入了多少个0。
猜你喜欢
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多