2016-05-30 9 views
4

Здесь у меня есть некоторые коды для кодирования аудиофайлов wma. Он работает отлично. Но выгрузка файла на сервер, некоторая ошибка happend.Its показывает, что выходной файл должен соответствовать требованиям ставка должна быть в 16000wma компрессия аудиофайлов с ошибкой при загрузке с использованием Naudio

public void ConvertToWMA(string tempFilePath, string tempFileName, string audioType) 
     { 
      WaveFormat form = new WaveFormat(16000, 16, 1); 
      using (WmaStream str = new WmaStream(tempFilePath + tempFileName, form)) 
      { 
       string profileData; 
       using (StreamReader reader = new StreamReader(File.OpenRead("audio.prx"))) 
       { 
        profileData = reader.ReadToEnd(); 
       } 

       IWMProfileManager profileManager; 
       IWMProfile wmProfile = null; 
       profileManager = WM.CreateProfileManager(); 
       profileManager.LoadProfileByData(profileData, out wmProfile); 

       WMProfile wmp = new WMProfile(str.Profile); 

       NAudio.WindowsMediaFormat.WmaWriter ww = new NAudio.WindowsMediaFormat.WmaWriter(new FileStream(@"D:\wma\conv\test.wma", FileMode.Create), form, wmProfile); 
       byte[] buff = null; 

       int read = 0; 

       buff = new byte[form.AverageBytesPerSecond]; 
       read = str.Read(buff, 0, buff.Length); 
       while ((read > 0)) 
       { 
        ww.Write(buff, 0, read); 
        read = str.Read(buff, 0, buff.Length); 
       } 

      } 
     } 

, как можно избавиться от этого issue.someone, пожалуйста, помогите мне ..

+1

Что происходит с щедрот здесь? Похоже, что вопрос уже принял принятый ответ, когда была добавлена ​​щедрость, и щедрость была добавлена ​​человеком с принятым ответом. – Yaur

+0

@ Яуру Мне просто нужен четкий ответ, лучше меня. –

ответ

1
{ 
      var temp = tempFilePath + tempFileName; 
      using (var reader = new MediaFoundationReader(temp)) 
      { 
       // Create a wave format for 16-bit pcm at 8000 samples per second. 
       int channels = reader.WaveFormat.Channels; 
       int rate = 8000; 
       int rawsize = 2; 
       int blockalign = rawsize * channels; // this is the size of one sample. 
       int bytespersecond = rate * blockalign; 
       //MediaFoundationEncoder.enc(reader, "test.mp3"); 
       var midformat = 
        WaveFormat.CreateCustomFormat(WaveFormatEncoding.Pcm, 
                rate, 
                channels, 
                bytespersecond, 
                blockalign, 
                rawsize * 8); 

       // And a conversion stream to turn input into 16-bit PCM. 
       //var midstream = new MediaFoundationResampler(reader, midformat); 
       // var outstream = new PcmToALawConversionStream(midstream); 
      // var outstream = new PcmToALawConversionStream(midstream); 
       //var converted16Bit = new SampleToWaveProvider16(mixer); 
// 
       // now for MP3, we need to upsample to 44.1kHz. Use MediaFoundationResampler 
       using (var resampled = new MediaFoundationResampler(
          reader, midformat)) 
       { 
        var outstream = new PcmToALawConversionStream(resampled); 
        // var desiredBitRate = 16000; // ask for lowest available bitrate 

        //MediaFoundationEncoder.EncodeToWma(outstream, 
        //    "mixedtets10.wma", desiredBitRate); 
        WaveFileWriter.CreateWaveFile("mixedtets10.wma", outstream); 
        //NAudio.WindowsMediaFormat.WmaWriter ww = new NAudio.WindowsMediaFormat.WmaWriter(new FileStream(@"D:\wma\conv\test1.wma", FileMode.Create), midformat, outstream); 
       } 


       // NAudio.WindowsMediaFormat.WmaWriter ww = new NAudio.WindowsMediaFormat.WmaWriter(new FileStream(@"D:\wma\conv\test1.wma", FileMode.Create), midformat, outstream); 

       //NAudio.WindowsMediaFormat.WmaWriter Ww= 
       // The output stream is our custom stream. 
       //var outstream = new PcmToALawConversionStream(midstream); 




      } 


     } 
+0

его работая идеально, размер увеличенный trice ... –

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

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