両方のオーディオサンプルのバイトを加算するだけで、2つの異なるオーディオサンプルを1つにミキシングする際に問題が発生します。MP3ファイルから2つのオーディオサンプルを合成する
それが言う私は、メディアプレーヤーでmixed.mp3ファイルを開こうとすると、プロセス下記後:ファイルを再生しながら
のWindows Media Playerの問題が発生しました。ここで
私はオーディオファイルをミックスするために使用しているコードです:
byte[] bytes1,bytes2,final;
int length1,length2,max;
// Getting byte[] of audio file
using (BinaryReader b = new BinaryReader(File.Open("background.mp3" , FileMode.Open)))
{
length1 = (int)b.BaseStream.Length;
bytes1 = b.ReadBytes(length1);
}
using (BinaryReader b = new BinaryReader(File.Open("voice.mp3" , FileMode.Open)))
{
length2 = (int)b.BaseStream.Length;
bytes2 = b.ReadBytes(length2);
}
// Getting max length
if(length1 > length2){
max = length1;
}else{
max = length2;
}
// Initializing output byte[] of max length
final = new byte[max];
// Adding byte1 and byte2 and copying into final
for (int i=0;i<max;i++)
{
byte b1 , b2;
if(i < length1){
b1 = bytes1[i];
}else{
b1 = 0;
}
if (i < length2){
b2 = bytes2[i];
}
else{
b2 = 0;
}
final[i] = (byte)(b1 + b2);
}
// Writing final[] as an mp3 file
File.WriteAllBytes("mixed.mp3" , final);
注:私は2つの同じファイルをミックスしようとしましたが、それが働いていた、つまり、メディアプレーヤーがスローされませんでしたエラーが発生して正しく再生されました。
あなたのボトムノートはどういう意味ですか?あなたは今コードが動作することを意味しますか? –
これはできません。 Mp3は行波データではありません。そのようなバイトを追加すると、100%データが破損します。それがあなたのためにどのように働いたかはわかりません。 –
デコードして計算し、作物を念頭に置いて(0..255)、再度エンコードします。あなたが今行っていることは、mp3が圧縮されているため(振幅データを含んでいない限り)、ファイルレベルで作業するときに変更してはいけないすべてのメタデータでヘッダーを考慮する必要があります。 –