4

Here I have some codes for encoding wma audio files..Its works perfectly.but uploading out put file to server ,some error happend.Its shows output file should be meet the requirements like rate should be in 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 get rid of this issue.someone please help me..

  • 1
    What is going on with the bounty here? It looks like the question already had an accepted answer when the bounty was added and the bounty was added by the person with the accepted answer. – Yaur Jun 23 '16 at 07:04
  • @Yaur I just need clear answer, better than me. – Jinto John Jun 23 '16 at 08:31

1 Answers1

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




            }


        }
Jinto John
  • 365
  • 4
  • 22