7
我有两个不同的音频样本混合在一起的问题,只需添加两个音频样本的字节。从MP3文件混合两个音频样本
以下过程后,当我尝试打开媒体播放器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);
注:我试图将两种相同的文件和它的工作,那就是,媒体播放器没有扔任何错误并正确播放。
你的底部注释是什么意思?你的意思是现在的代码有效? –
这是不可能的。 Mp3不是行波数据。像这样添加字节将100%损坏的数据。不知道它是如何工作的 –
解码它,做你的计算,记住作物(0..255),再次编码。你现在所做的工作不能工作,因为:mp3是压缩的(除非它只包含幅度数据......我不是那里的专家),你也必须考虑包含在文件级别工作时不应该改变的所有元数据的头文件。 –