c# - 在 C# 中播放部分声音 (WMA) 文件

标签 c# windows audio wma

我有一个 WMA 文件,其中包含许多不同的音频片段。 有什么方法可以播放声音流的一部分吗?

类似于:

public static void Play(Stream soundStream, long start, long end);

最佳答案

您可以使用 NAudio 来做到这一点, 它是 .Net 的音频库。

使用示例 here我能够抛出一个快速测试应用程序来尝试它。使用 WaveSteam.Skip(int seconds) 方法,您可以从文件中的特定位置开始。我一直无法弄清楚如何获得最终位置。下面是在 30 秒标记处启动 wma 文件的修改示例:

    IWavePlayer waveOutDevice = new WaveOut();
    WaveStream mainOutputStream;
    WaveChannel32 volumeStream;

    WaveStream wmaReader = new WMAFileReader(@"F:\My Music\The Prodigy\Music for the Jilted Generation\01 Intro.wma");
    volumeStream = new WaveChannel32(wmaReader);

    mainOutputStream = volumeStream;

    mainOutputStream.Skip(30); //start 30 seconds into the file
    waveOutDevice.Init(mainOutputStream);
    waveOutDevice.Play();

不过,上面的示例省略了停止播放和处理流的清理代码。希望能有所帮助。

关于c# - 在 C# 中播放部分声音 (WMA) 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13371717/

相关文章:

javascript - speex 拆分音频数据 - WebAudio - VOIP

android - Android 中的声音分析/编辑

c# - 使用 AJAX 或 ASP.NET 进行异步调用?

c# - 您如何捕获 Web 服务抛出的 soap 异常?

c# - Newton.JSON 将动态对象转换为 JObject 而不是动态对象

windows - 在备份批处理脚本中使用当前日期作为文件名的参数

windows - 无法启动 Git Bash

c# - SQL 报告 : Null Parameter

c++ - 注册特定文件扩展名的 Windows shell 命名空间文件夹 View 扩展名

silverlight - 如何在 Silverlight 中同时播放多个音频源