原理:AMR 文件,最省事且零依赖的做法就是“二进制顺序拼接 + 跳过除首文件外的 6 字节文件头” AMR-NB 格式每条语音都带一个固定的 #!AMR\n(0x23 0x21 0x41 0x4D 0x52 0x0A)头,只要把后续文件的这 6 字节去掉,直接追加到前一个文件末尾即可,播放器会把它们当成一轨连续解码,无需重新编码。/// <summary>/// 把多个 AMR 文件合并成一条,不重新编码,秒级完成/// </summary>publicstaticvoidMerge(List<string>aInputPaths,string aOutputPath){constint bAmrHeaderSize=6;// #!AMR\nusingvarbOutFileStream=newFileStream(aOutputPath,FileMode.Create,FileAccess.Write);for(int i=0;i<aInputPaths.Count;i++){usingvarbInputFileStream=newFileStream(aInputPaths[i],FileMode.Open,FileAccess.Read);// 首文件保留文件头,其余跳过if(i!=0)bInputFileStream.Position=bAmrHeaderSize;bInputFileStream.CopyTo(bOutFileStream);}}