Error transferring wma audio files using Naudio

Here I have some codes for encoding wma audio files. It works great. but uploads the file to the server, some error occurs. It shows that the output file must meet the requirements, such as speed, should be at 16000

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);
                }

            }
        }

how can I get rid of this problem. Someone please help me ..

+4
source share
1 answer
  {
            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);




            }


        }
+1
source

All Articles