直接上代码:
先NuGet安装NAudio.Wave和NAudio.Lame,再引用
using NAudio.Wave;
using NAudio.Lame;
1, 文件列表来自于根目录里所有的m4a文件
//声明一个 保存m4a文件夹的路径
string directloc = @"G:\mp3\MP3";
//获取文件夹下所有的m4a文件
string[] fyles = Directory.GetFiles(directloc);
// 声明一个空对象
NAudio.Wave.BlockAlignReductionStream stream = null;
2,遍历数组中,逐一单个文件进行转换。
for (int i = 0; i < fyles.Length; i++)
{
//读取单个m4a文件
MediaFoundationReader mfM4A = new MediaFoundationReader(fyles[i]);
stream = new NAudio.Wave.BlockAlignReductionStream(mfM4A);
//获取文件名称
var dd = fyles[i].Split("\\");
string mp3FileName = "";
if (dd != null)
{
var ddd = dd[dd.Length - 1];
if (ddd != null)
{
mp3FileName = ddd.ToString();//.Replace(".mp3", "");
}
}
//创建一个MP3空文件
using (var mp3FileReader = new LameMP3FileWriter("G:\\mp3\\ToMp3New\\" + mp3FileName, stream.WaveFormat, LAMEPreset.ABR_320))
{
//把读到文件流复制到mp3FileReaderMP3空文件中
stream.CopyTo(mp3FileReader);
}
}