static async Task <bool> To_MP3(int File_Number, string To_Dir, bool IsFromFileDelete) { if (!File.Exists(From_Files[File_Number])) { return(false); } try { string To_Audio_File = To_Dir + "\\" + Path.GetFileNameWithoutExtension(From_Files[File_Number]) + ".mp3"; await Task.Run(() => { string Ex = Path.GetExtension(From_Files[File_Number]); if (Ex == ".ogg") { using (NAudio.Vorbis.VorbisWaveReader reader = new NAudio.Vorbis.VorbisWaveReader(From_Files[File_Number])) using (LameMP3FileWriter wtr = new LameMP3FileWriter(To_Audio_File, reader.WaveFormat, 128)) reader.CopyTo(wtr); } else if (Ex == ".wav") { using (WaveFileReader reader = new WaveFileReader(From_Files[File_Number])) using (LameMP3FileWriter wtr = new LameMP3FileWriter(To_Audio_File, reader.WaveFormat, 128)) reader.CopyTo(wtr); } else if (Ex == ".flac") { using (NAudio.Flac.FlacReader reader = new NAudio.Flac.FlacReader(From_Files[File_Number])) using (LameMP3FileWriter wtr = new LameMP3FileWriter(To_Audio_File, reader.WaveFormat, 128)) reader.CopyTo(wtr); } else if (Ex == ".aac" || Ex == ".wma" || Ex == ".mp4" || Ex == ".webm") { using (MediaFoundationReader reader = new MediaFoundationReader(From_Files[File_Number])) using (LameMP3FileWriter wtr = new LameMP3FileWriter(To_Audio_File, reader.WaveFormat, 128)) reader.CopyTo(wtr); } else { Un4seen.Bass.Misc.EncoderLAME mc = new Un4seen.Bass.Misc.EncoderLAME(0); mc.EncoderDirectory = Voice_Set.Special_Path + "/Encode_Mp3"; mc.InputFile = From_Files[File_Number]; mc.OutputFile = To_Audio_File; mc.LAME_Bitrate = (int)Un4seen.Bass.Misc.EncoderLAME.BITRATE.kbps_160; mc.LAME_Mode = Un4seen.Bass.Misc.EncoderLAME.LAMEMode.Default; mc.LAME_Quality = Un4seen.Bass.Misc.EncoderLAME.LAMEQuality.Q2; Un4seen.Bass.Misc.BaseEncoder.EncodeFile(mc, null, true, false, true); } if (IsFromFileDelete) { File.Delete(From_Files[File_Number]); } }); } catch { return(false); } return(true); }
public byte[] ConvertToMp3(string file, int bitrate = 128) { using (var retMs = new MemoryStream()) using (var rdr = new MediaFoundationReader(file)) using (var wtr = new NAudio.Lame.LameMP3FileWriter(retMs, rdr.WaveFormat, bitrate)) { rdr.CopyTo(wtr); return(retMs.ToArray()); } }
internal static void RecordStream() { if (!SongInfo.IsContinuous && !Directory.Exists($".\\{SongInfo.RadioStation.Name}\\")) { Directory.CreateDirectory($".\\{Regex.Replace(SongInfo.RadioStation.Name, "\\/", "-")}\\"); } string Mp3Name = $"{Regex.Replace(SongInfo.CurrentSong.Artist, "\\/", "-")} - {Regex.Replace(SongInfo.CurrentSong.Title, "\\/", "-")}"; string Mp3Path = $"{TrimInvalidChars(SongInfo.RadioStation.Name)}{(SongInfo.IsContinuous ? $"{string.Empty}" : $"\\{TrimInvalidChars(Mp3Name)}")}"; using (Mp3Reader = new MediaFoundationReader(SongInfo.RadioStation.Endpoints.Stream)) using (Mp3Writer = new LameMP3FileWriter($".\\{Mp3Path}.mp3", Mp3Reader.WaveFormat, SongInfo.Bitrate, SongInfo.CurrentSong)) Mp3Reader.CopyTo(Mp3Writer); }
public ReusablePlayer(string Path) { FilePath = Path; if (System.IO.File.Exists(Path)) { switch (System.IO.Path.GetExtension(Path.ToLower())) { default: MediaFoundationReader mfr = new MediaFoundationReader(Path); mfr.Position = 0; System.IO.MemoryStream ms = new System.IO.MemoryStream(); ms.Position = 0; mfr.CopyTo(ms); mfr.Dispose(); memory = ms.ToArray(); format = mfr.WaveFormat; ms.Dispose(); break; } } }
// Convert M4A to MP3 using libmp3lame library public static void M4AToMP3(string m4aFileName, string mp3FileName, int bitRate = 128) { using (var reader = new MediaFoundationReader(m4aFileName)) using (var writer = new LameMP3FileWriter(mp3FileName, reader.WaveFormat, bitRate)) reader.CopyTo(writer); }