У меня есть файл WAV, записанный с использованием пользовательского кодека. Кодек был установлен на моем компьютере, и файл WAV отлично воспроизводится на моем компьютере с помощью проигрывателя Windows Media. Я использую подпрограммы NAudio, чтобы попытаться воспроизвести файл WAV с помощью кода C#. Значения пользовательского формата выглядят странно, но я тщательно проверил их, проанализировав заголовок файла WAV. Вот лучший код C#, который я придумал для воспроизведения файла:
WaveFormat wfOKI = WaveFormat.CreateCustomFormat(WaveFormatEncoding.DialogicOkiAdpcm, 8000, 1, 3000, 48, 3);
WaveStream wsRaw = new WaveFileReader(txtFileName.Text);
wsRaw = WaveFormatConversionStream.CreatePcmStream(wsRaw); // Line A
wsRaw = new BlockAlignReductionStream(wsRaw); // Line B
WaveStream wsOKI = new RawSourceWaveStream(wsRaw, wfOKI);
WaveOut woCall = new WaveOut();
woCall.Init(wsOKI); // <-- This line gives an error.
woCall.Play();
while (woCall.PlaybackState == PlaybackState.Playing)
{
System.Threading.Thread.Sleep(300);
}
Init() вызывает следующую ошибку: в NAudio.dll произошло необработанное исключение типа «NAudio.MmException». Дополнительная информация: WaveBadFormat вызывает waveOutOpen.
Является ли код правильной стратегией для воспроизведения WAV с пользовательским кодеком? Я пробовал все четыре комбинации комментирования/в строках A и B (без разницы в сообщении об ошибке).
Я использую 64-разрядную версию Windows 7, профессиональную версию Visual Studio 2010 (проект установлен на x86) и версию 1.6 NAudio. Я очень новичок в NAudio, но у меня получилось несколько строк, которые воспроизводили «стандартный» WAV (то есть файл, в котором не использовался пользовательский кодек).