2

waveファイルのビットレートを変更したい。

ネットで検索したところ、waveファイルには長さ44バイトのヘッダーが含まれており、25、26、27、28バイトはwaveファイルのビットレートを格納するために使用されていることがわかりました

そのため、波を取得してバイト配列に保存し、波のビットレートを保存するために使用されたバイトの値を変更します。

コードは次のとおりです。

        private int sampleRate;
        private byte[] ByteArr;
        private MemoryStream ByteMem;
        ByteArr = null;
        ByteMem = null;
        ByteArr = File.ReadAllBytes(pathOfWav.Text);
        sampleRate = BitConverter.ToInt32(ByteArr, 24) * 2;
        Array.Copy(BitConverter.GetBytes(sampleRate), 0, ByteArr, 24, 4);
        ByteMem = new MemoryStream(ByteArr);

ここpathOfWav.Textでは、textBox である Wave ファイルの場所を保存し、Wave ファイルのすべてのバイトを保存してByteArrから、4 バイト (25 から 28) を Int32 に変換し、それを 2 倍して音声の速度を上げて保存しました。その後、 Bit Rate の新しい値で前sampleRate のものを変更し、新しい MemoryStream をインスタンス化します。ByteArrsampleRate

私の質問は、Naudio を使用して新しい Wave ストリームを再生する方法ですか???

4

2 に答える 2

1

WAV ファイルのビットレートを変更するには、そのフォーマット チャンクを更新するだけではできません。実際には、新しいサンプルレート/ビット深度 (PCM であると仮定) で再エンコードするか、PCM でない場合はコーデック用に選択された別のビットレートで再エンコードする必要があります。さまざまな種類の PCM 間の変換を含む、さまざまなオーディオ フォーマット間の変換に関する記事をここに書きました。同じ記事では、ビットレートではなくサンプル レートを変更する場合の対処方法についても説明しています。

于 2013-05-21T14:42:00.140 に答える