2015-03-05 3 views
0

Попытка преобразовать 12-летний WAV файл в формате mp3,LameMP3FileWriter: неподдерживаемый формат кодирования имени MuLaw Параметр: Формат

8K, 8bit, Mono-канал, формат MuLaw, WAV

и я получаю эту ошибку в LameMP3FileWriter линии:

LameMP3FileWriter: неподдерживаемый формат кодирования MuLaw имя параметра: формат

static void Main(string[] args) 
{ 
    string wavFilePath = @"C:\temp\Message.wav"; 
    string mp3FilePath = @"C:\temp\Message.mp3"; 
    if (!File.Exists(mp3FilePath)) 
    { 
     byte[] bytearrwav = File.ReadAllBytes(wavFilePath); 
     byte[] bytearrmp3 = ConvertWavToMp3(bytearrwav); 
     File.WriteAllBytes(mp3FilePath, bytearrmp3); 
    } 
} 

public static byte[] ConvertWavToMp3(byte[] wavFile) 
{ 
    try 
    { 
     using (var retMs = new MemoryStream()) 
     using (var ms = new MemoryStream(wavFile)) 
     using (var rdr = new WaveFileReader(ms)) 
     using (var wtr = new LameMP3FileWriter(retMs, rdr.WaveFormat, 128)) 
     { 
      rdr.CopyTo(wtr); 
      return retMs.ToArray(); 
     } 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
     return null; 
    } 
} 

Может ли кто-нибудь показать мне, как преобразовать этот тип wav в mp3?

ответ

1

В итоге я использовал SOX и LAME exes, чтобы конвертировать в полезный wav-файл, а затем конвертировать в mp3. Это оказалось простым и эффективным решением. Вот основная часть кода:

  // create temp file 
      tempFile = this.FolderFromFile(inputFileAndPath) + "tempFile.wav"; 

      // Part 1: Convert mu-Law WAV to floating point WAV 
      // perform work with no display of console window 
      // Example: SOX.EXE MachMsg1.wav -e floating-point MsgFloatingPoint.wav 
      using (this) 
      { 
       System.Diagnostics.Process proc = new System.Diagnostics.Process 
       { 
        StartInfo = new System.Diagnostics.ProcessStartInfo 
        { 
         FileName = soxFileAndPath, 
         Arguments = inputFileAndPath + " " + "-e floating-point" + " " + tempFile, 
         UseShellExecute = false, 
         RedirectStandardOutput = true, 
         CreateNoWindow = true 
        } 
       }; 
       proc.Start(); 
      } 


      // Part 2: Convert floating point WAV to MP3 using highest quality possible 
      // perform work with no display of console window 
      // Example: LAME.EXE -V4 MsgFloatingPoint.wav MsgFloatingPoint.mp3 
      using (this) 
      { 
       System.Diagnostics.Process proc = new System.Diagnostics.Process 
       { 
        StartInfo = new System.Diagnostics.ProcessStartInfo 
        { 
         FileName = lameFileAndPath, 
         Arguments = "-V4" + " " + tempFile + " " + outputFileAndPath, 
         UseShellExecute = false, 
         RedirectStandardOutput = true, 
         CreateNoWindow = true 
        } 
       }; 
       proc.Start(); 
      } 

SOX утилита командной строки: URL: http://sox.sourceforge.net/

Версия: SoX 14.4.2 выпущен на 02/22/2015

LAME компилируются утилиты командной строки : URL: http://www.rarewares.org/mp3-lame-bundle.php

Версия: LAME 3.99.5 выпущена 22.05.2014, Bundle, скомпилированная с помощью Intel Compiler 14.0.3.

Hydrogenaudio recommended settings 
     -- Best quality, "archiving"2 : -b 320 
      CBR 320 is the strongest setting for MP3, with the lowest risk of artifacts. With the exception of a few situations, 
      quality is rarely better than the highest VBR profiles described below. 
     -- High quality, HiFi, home or quiet listening : -V0 (avg. 245 kbps) or -V1 (avg. 225 kbps) or -V2 (avg. 190 kbps) or -V3 (avg. 175 kbps). 
      These settings are considered to produce transparent encoding (transparent = most people can't distinguish the MP3 
      from the original in an ABX blind test). Audible differences between these presets exist, but are rare. 
     -- Portable, background noise and low bitrate requirement, small sizes : -V4 (avg. 160 kbps) or -V5 (avg. 130 kbps) 
      or -V6 (avg. 115 kbps) -V6 produces an "acceptable" quality, while -V4 should be close to perceptual transparency. 
     -- Very low bitrate, small sizes, eg. for voice, radio, mono encoding : --abr 80 (stereo) or --abr 56 -m m (mono) 
      For very low bitrates, up to 100kbps, ABR is most often the best solution. 
2

Перед конвертированием в MP3 вам необходимо преобразовать файл в более стандартный формат. Используйте WaveFormatConversionStream.CreatePcmStream, чтобы перейти от закона mu к линейному PCM 16 бит. Тогда следующая задача будет заключаться в том, что LAME, вероятно, не понравится звук 8 кГц, поэтому повысится до 16 кГц, возможно, выше с любым другим WaveFormatConversionStream или MediaFoundationResampler.

 Смежные вопросы

  • Нет связанных вопросов^_^