gpt4 book ai didi

c# - 使用 naudio 播放 .wav 文件,播放在 1 秒后停止

转载 作者:太空狗 更新时间:2023-10-29 23:03:37 26 4
gpt4 key购买 nike

我在 C# 中使用 naudio 库,想播放一个简单的文件。问题是,播放在 1 秒后停止。我无法弄清楚它这样做的原因。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NAudio.Wave;

namespace NAudioTest
{
class Program
{
static IWavePlayer waveout;
static WaveStream outputStream;
static string filename = null;

static void Main(string[] args)
{
waveout = new WaveOut();

filename = "C:\\1.wav";

outputStream = CreateInputStream(filename);

try
{
waveout.Init(outputStream);
}
catch (Exception ex)
{
Console.WriteLine("Error while loading output");
Console.WriteLine("Details: " + ex.Message);
Console.ReadLine();
return;
}

Console.WriteLine("Press [Enter] to start playback");
Console.ReadLine();

waveout.Play(); //this stops after 1 sec. should it play until i hit enter cause of the next line?

Console.WriteLine("Press [Enter] to abort");
Console.ReadLine();
waveout.Dispose();
Console.ReadLine();
}


static WaveStream CreateInputStream(string name)
{
WaveChannel32 inputStream;
if (name.EndsWith(".wav"))
{
WaveStream readerStream = new WaveFileReader(name);
if (readerStream.WaveFormat.Encoding != WaveFormatEncoding.Pcm)
{
readerStream = WaveFormatConversionStream.CreatePcmStream(readerStream);
readerStream = new BlockAlignReductionStream(readerStream);
}

if (readerStream.WaveFormat.BitsPerSample != 16)
{
var format = new WaveFormat(readerStream.WaveFormat.SampleRate, 16, readerStream.WaveFormat.Channels);
readerStream = new WaveFormatConversionStream(format, readerStream);
}
inputStream = new WaveChannel32(readerStream);
}
else
{
throw new InvalidOperationException("Invalid extension");
}
return inputStream;
}
}
}

最佳答案

如果您尝试从控制台应用程序播放音频,则需要确保您正在使用函数回调,因为 WaveOut 的默认设置是使用窗口回调。

new WaveOut(WaveCallbackInfo.FunctionCallback())

更新:对于较新版本的 NAudio,我现在建议您避免函数回调,因为它们会导致某些驱动程序出现死锁。相反,使用事件回调和后台线程的 WaveOutEvent 是首选机制:

new WaveOutEvent()

关于c# - 使用 naudio 播放 .wav 文件,播放在 1 秒后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4391409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com