当前位置: 首页 > 编程语言 > C#

C#-Concatenate2MP3filestoshare

时间:2023-04-10 13:16:49 C#

C#:Concatenate2MP3files我尝试使用下面的代码连接2个MP3文件。我有一个新文件,我可以播放前半部分(完成第一个文件)但后半部分没有声音。新文件的长度是正确的。我做错了什么?列出文件=newList();vartempfile=File.ReadAllBytes(Path.Combine(path,"1.mp3"));文件。添加(临时文件);tempfile=File.ReadAllBytes(Path.Combine(path,"2.mp3"));文件。添加(临时文件);Byte[]a=newByte[files[0].Length+files[1].Length];Array.Copy(files[0],a,files[0].Length);Array.Copy(files[1],a,files[1].Length);File.WriteAllBytes(Path.Combine(path,"3.mp3"),a);我敢打赌你只听第二首歌。(两个文件的长度相同或第一个较短)您正在复制第一首歌曲数据。并且MP3数据是流式传输的,因此您可以将文件相互附加而不用担心比特率(尽管它们可能会出现故障)比特率应该自动调整。MP3标题的细节…试试这个…Array.Copy(files[0],0,a,0,files[0].Length);Array.Copy(files[1],0,a,files[0].Length,files[1].Length);……还是更好……using(varfs=File.OpenWrite(Path.Combine(path,"3.mp3"))){varbuffer=File.ReadAllBytes(Path.Combine(path,"1.mp3"));fs.Write(buffer,0,buffer.Length);buffer=File.ReadAllBytes(Path.Combine(path,"2.mp3"));fs.Write(buffer,0,buffer.Length);fs.Flush();}简单:publicstaticvoidCombine(string[]mp3Files,stringmp3OuputFile){using(varw=newBinaryWriter(File.Create(mp3OuputFile))){newList(mp3Files).ForEach(f=>w.Write(File.ReadAllBytes(f)));以下是使用NAudio连接MP3文件的方法:publicstaticvoidCombine(string[]inputFiles,Streamoutput){foreach(stringfileininputFiles){Mp3FileReaderreader=newMp3FileReader(file);if((output.Position==0)&&(reader.Id3v2Tag!=null)){output.Write(reader.Id3v2Tag.RawData,0,reader.Id3v2Tag.RawData.L长度);}Mp3Frame帧;while((frame=reader.ReadNextFrame())!=null){output.Write(frame.RawData,0,frame.RawData.Length);}}}有关详细信息,请参阅此处和此处之前已提出此问题另请参阅在C#中读取MP3标头,但我不想读取标头,而是想删除它们,连接其余部分,然后为连接的文件生成新标头.编辑:进一步阅读后,如果您只是连接文件而不去除ID3标签,则没有任何区别。但首先剥离它们似乎仍然是个好主意。每个MP3文件在文件开头都有一个标头,其中包含歌曲元数据。至少你必须在第二个文件中删除它。这是之前的StackOverflow问题,Howtomerge/joinMP3filesusingC#?.这是另一个阅读MP3标签信息(ID3v1和ID3v2)的链接,它可能会帮助您删除它。众所周知,Mp3文件只是帧,您可以将流连接在一起:publicstaticvoidConcatenate(paramsstring[]mp3filenames){Streamw=File.OpenWrite("D:\out.mp3");foreach(mp3filenames中的字符串文件名)File.OpenRead(filename).CopyTo(w);w.Flush();w.关闭();}并听听用法:以上就是C#学习教程:C#:Connect2MP3files分享所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多付出注意——连接(“D:\1.mp3”,“D:\2.mp3”);本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: