0

Mark Heath のブログhereに従って、NAudio の BufferedWaveProvider を使用して Mp3 ストリーミングを実装しようとしています。

すべてのストリーミングを実装しましたが、「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 バイトを調べたところ、同じでした。私が間違っているアイデアはありますか?それとも、WaveFormat の違いはおせっかいですか? 他に何か問題があるのでしょうか?

御時間ありがとうございます!

4

1 に答える 1