1

次のコードを使用して、3つのmp3ファイルを1つのmp3ファイルにマージしました

using (var fs = File.OpenWrite(Path.Combine(txtOutputFile.Text, "new.mp3")))
            {
                var buffer = File.ReadAllBytes(Path.Combine(txtIntroLoc.Text, fileName1));
                fs.Write(buffer, 0, buffer.Length);
                buffer = File.ReadAllBytes(Path.Combine(txtOutroloc.Text, fileName2));
                fs.Write(buffer, 0, buffer.Length);
                buffer = File.ReadAllBytes(Path.Combine(txtFileThree.Text, fileName3));
                fs.Write(buffer, 0, buffer.Length);
                fs.Flush();
            }

私が望むのは、この新しく作成された mp3 ファイルのバックグラウンドで再生される別の mp3 ファイルをオーバーレイすることです。私はそれが可能であることを知っていますが、これを達成するための正しい方法を取得していません。どんな助けでも素晴らしいでしょう。ありがとう

4

2 に答える 2

1

「オーバーレイ」の問題について:

オリジナルを PCM にデコードし、オーバーレイにミキシングしてから、全体を MP3 に再エンコードしない限り、これを行う方法はありません。

既存のコードで:

このように MP3 ファイルを連結するだけで十分です。通常は、ID3 タグを捨てて、各ファイルの MP3 フレームを含む 1 つのファイルを作成することをお勧めします。NAudio を使用している場合は、ReadNextFrame()Mp3FileReader のメソッドを使用して各 MP3 フレームを取得しRawBytes、それをファイルに書き出すことができます。

最良の結果を得るには、すべての MP3 ファイルで同じサンプル レートとチャンネル数を使用する必要があります。また、これらが VBR の場合、XING または VBRI ヘッダーの情報を無効にすることになるため、それらも破棄することをお勧めします。

于 2013-09-16T14:20:18.067 に答える