Mark Heathのブログに続いてNAudioのBufferedWaveProviderを使用してMp3ストリーミングを実装しようとしています。InvalidParameter calling waveOutOpen
私のストリーミングはすべて実装されていますが、「InvalidParameter calling waveOutOpen」というメッセージが表示されたMmExceptionが表示されます。
私はこの関連の質問を見た:InvalidParameter calling waveOutOpen MmExceptionを、ので、私は次のコードスニペットを使用してきたWAVEFORMATを見ていた。ここで
private WaveFormat CreateWaveFormat(Mp3Frame frame)
{
var numberOfChannels = frame.ChannelMode == ChannelMode.Mono ? 1 : 2;
return new Mp3WaveFormat(frame.SampleRate, numberOfChannels, frame.FrameLength, frame.BitRate);
}
が私のデバッガから取られ、私が手WAVEFORMATです:
- sampleProvider.WaveFormat {MpegLayer3} NAudio.Wave.WaveFormat {NAudio.Wave.Mp3WaveFormat}
AverageBytesPerSecond 32000 int
BitsPerSample 0 int
BlockAlign 1 int
Channels 2 int
Encoding MpegLayer3 NAudio.Wave.WaveFormatEncoding
ExtraSize 12 int
SampleRate 48000 int
averageBytesPerSecond 32000 int
bitsPerSample 0 short
blockAlign 1 short
blockSize 768 ushort
channels 2 short
codecDelay 0 ushort
extraSize 12 short
flags PaddingIso NAudio.Wave.Mp3WaveFormatFlags
framesPerBlock 1 ushort
id Mpeg NAudio.Wave.Mp3WaveFormatId
sampleRate 48000 int
waveFormatTag MpegLayer3 NAudio.Wave.WaveFormatEncoding
+ Static members
これをすべてテストするには、テスト用Mp3ファイルをFileStreamにロードします。私は、全体の流れを読むためにMp3FileReaderを使用する場合WAVEFORMATはどうだったかを見ることにしました、そして興味深いことに、私は完全に異なるWAVEFORMATました:
- format {16 bit PCM: 48kHz 2 channels} NAudio.Wave.WaveFormat
AverageBytesPerSecond 192000 int
BitsPerSample 16 int
BlockAlign 4 int
Channels 2 int
Encoding Pcm NAudio.Wave.WaveFormatEncoding
ExtraSize 0 int
SampleRate 48000 int
averageBytesPerSecond 192000 int
bitsPerSample 16 short
blockAlign 4 short
channels 2 short
extraSize 0 short
sampleRate 48000 int
waveFormatTag Pcm NAudio.Wave.WaveFormatEncoding
を私は両方のケースでは、ストリームの最初の16バイトで見ていました、そしてそれらは同一であった。私が間違っているアイデアは?あるいは、WaveFormatsの違いが赤い鳴き声ですか?他に何か問題がありますか?
ありがとうございました!