如何在c#中播放低延迟/非常小延迟的音频文件
本文关键字:延迟 非常 文件 音频 播放 | 更新日期: 2023-09-27 17:54:21
如何在c#中播放音频文件(.mp3)并具有很小的延迟?我的意思是,文件应该在用户输入后立即开始播放。
另外,我怎么能在同一时间并行播放两个音频文件?
看看NAudio库。
同时播放多个文件,参见这篇文章
为了获得最小可能的延迟,您需要在没有/沉默数据的情况下运行音频播放,并且在感兴趣的事件上,您将向已经激活的设备提供真实的播放数据。通过这种方式,您可以消除可能发生的激活音频播放设备的开销。开销并不是很大,所以你最好不要让你的应用过于复杂。
可以选择播放音频的api: DirectShow。. NET,特别是NAudio .
除非你要在独占模式下使用播放设备(你不太可能想要这样做),所有的api都支持多个独立流的播放,所有的混合都是在后台自动为你完成的。
我向您展示如何使用DirectX AudioVideoPlayback:
public class MusicPlayer
{
private static Audio m_Audio;
private static void Loop(Object Sender, EventArgs e)
{
((Audio)Sender).SeekCurrentPosition(0d, SeekPositionFlags.AbsolutePositioning);
}
public static void Dispose()
{
if (m_Audio != null)
{
m_Audio.Stop();
m_Audio.Dispose();
m_Audio = null;
}
}
public static void Mute()
{
if ((m_Audio != null) && m_Audio.Playing)
m_Audio.Volume = -10000;
}
public static void Play(String filePath, Boolean loop)
{
if (File.Exists(filePath))
{
Dispose();
if (m_Audio == null)
m_Audio = new Audio(filePath);
else
m_Audio.Open(filePath);
if (loop)
m_Audio.Ending += Loop;
m_Audio.Volume = MusicSettings.Volume - 10000;
m_Audio.Play();
}
}
public static void Unmute()
{
if (m_Audio != null)
m_Audio.Volume = MusicSettings.Value - 10000;
}
}