Csharp/C#教程:WaveMixerStream32和IWaveProvider分享


WaveMixerStream32和IWaveProvider

有没有办法让NAudio将WaveMixerStream32与WaveProviders链接,而不是WaveStreams? 我正在使用BufferedWaveProvider传输多个网络流。 似乎没有一种简单的方法将其转换为WaveStream。

干杯!

卢克

将IWaveProvider转换为WaveStream非常简单。 IWaveProvider只是一个简化的WaveStream,它不支持重新定位并且长度未知。 你可以像这样创建一个适配器:

public class WaveProviderToWaveStream : WaveStream { private readonly IWaveProvider source; private long position; public WaveProviderToWaveStream(IWaveProvider source) { this.source = source; } public override WaveFormat WaveFormat { get { return source.WaveFormat; } } ///  /// Don't know the real length of the source, just return a big number ///  public override long Length { get { return Int32.MaxValue; } } public override long Position { get { // we'll just return the number of bytes read so far return position; } set { // can't set position on the source // nb could alternatively ignore this throw new NotImplementedException(); } } public override int Read(byte[] buffer, int offset, int count) { int read = source.Read(buffer, offset, count); position += read; return read; } } 

我对长度和位置属性进行了一些评论。 你需要做什么取决于你是否通过这个类试图使用这些属性。

此外,没有什么能阻止您创建适用于IWaveProvider的WaveMixerStream32版本。 你可以简化很多事情,因为不需要在混音器中实现任何重新定位逻辑,因为你无法重新定位任何输入。

上述就是C#学习教程:WaveMixerStream32和IWaveProvider分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1009977.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐