嗨开发人员,
如果我们将录制的语音保存为mp3文件.我们在打开文件时收到错误,因为Windows Media Player无法播放该文件.播放器可能不支持该文件类型,或者可能不支持用于压缩文件的编解码器.
请提供解决方案来克服这个问题….
这是我的源代码
namespace Windows_Phone_Audio_Recorder { public partial class MainPage : PhoneApplicationPage { MemoryStream m_msAudio = new MemoryStream(); Microphone m_micDevice = Microphone.Default; byte[] m_baBuffer; SoundEffect m_sePlayBack; viewmodel vm = new viewmodel(); long m_lDuration = 0; bool m_bStart = false; bool m_bPlay = false; private DispatcherTimer m_dispatcherTimer; public MainPage() { InitializeComponent(); SupportedOrientations = SupportedPageOrientation.Portrait | SupportedPageOrientation.Landscape; DataContext = vm; m_dispatcherTimer = new DispatcherTimer(); m_dispatcherTimer.Interval = TimeSpan.FromTicks(10000); m_dispatcherTimer.Tick += frameworkDispatcherTimer_Tick; m_dispatcherTimer.Start(); FrameworkDispatcher.Update(); //icBar.ItemsSource = vm.AudioData; } void frameworkDispatcherTimer_Tick(object sender,EventArgs e) { FrameworkDispatcher.Update(); } private void btnStart_Click(object sender,RoutedEventArgs e) { m_bStart = true; tbData.Text = "00:00:00"; m_lDuration = 0; m_micDevice.BufferDuration = TimeSpan.FromMilliseconds(1000); m_baBuffer = new byte[m_micDevice.GetSampleSizeInBytes(m_micDevice.BufferDuration)]; //m_micDevice.BufferReady += new EventHandler(m_Microphone_BufferReady); m_micDevice.BufferReady += new EventHandler<EventArgs>(m_Microphone_BufferReady); m_micDevice.Start(); } void m_Microphone_BufferReady(object sender,EventArgs e) { m_micDevice.GetData(m_baBuffer); Dispatcher.BeginInvoke(()=> { vm.LoadAudioData(m_baBuffer); m_lDuration++; TimeSpan tsTemp = new TimeSpan(m_lDuration * 10000000); tbData.Text = tsTemp.Hours.ToString().PadLeft(2,'0') + ":" + tsTemp.Minutes.ToString().PadLeft(2,'0') + ":" + tsTemp.Seconds.ToString().PadLeft(2,'0'); } ); //this.Dispatcher.BeginInvoke(new Action(() => vm.LoadAudioData(m_baBuffer))); //this.Dispatcher.BeginInvoke(new Action(() => tbData.Text = m_baBuffer[0].ToString() + m_baBuffer[1].ToString() + m_baBuffer[2].ToString() + m_baBuffer[3].ToString())); m_msAudio.Write(m_baBuffer,m_baBuffer.Length); } private void btnStop_Click(object sender,RoutedEventArgs e) { if (m_bStart) { m_bStart = false; m_micDevice.Stop(); ProgressPopup.IsOpen = true; } if (m_bPlay) { m_bPlay = false; m_sePlayBack.Dispose(); } } private void btnPlay_Click(object sender,RoutedEventArgs e) { m_bPlay = true; m_sePlayBack = new SoundEffect(m_msAudio.ToArray(),m_micDevice.SampleRate,AudioChannels.Mono); m_sePlayBack.Play(); } private void btnSave_Click(object sender,RoutedEventArgs e) { if (txtAudio.Text != "") { IsolatedStorageFile isfData = IsolatedStorageFile.GetUserStoreForApplication(); string strSource = txtAudio.Text + ".wav"; int nIndex = 0; while (isfData.FileExists(txtAudio.Text)) { strSource = txtAudio.Text + nIndex.ToString().PadLeft(2,'0') + ".wav"; } IsolatedStorageFileStream isfStream = new IsolatedStorageFileStream(strSource,FileMode.Create,IsolatedStorageFile.GetUserStoreForApplication()); isfStream.Write(m_msAudio.ToArray(),m_msAudio.ToArray().Length); isfStream.Close(); } this.Dispatcher.BeginInvoke(new Action(() => ProgressPopup.IsOpen = false)); } } }
DotNet Weblineindia
public void UploadAudio() { try { if (m_msAudio != null) { var fileUploadUrl = "uploadurl"; var client = new HttpClient(); m_msAudio.Position = 0; MultipartFormDataContent content = new MultipartFormDataContent(); content.Add(new StreamContent(m_msAudio),"uploaded_file",strFileName); // upload the file sending the form info and ensure a result.it will throw an exception if the service doesn't return a valid successful status code client.PostAsync(fileUploadUrl,content) .ContinueWith((postTask) => { try { postTask.Result.EnsureSuccessStatusCode(); var respo = postTask.Result.Content.ReadAsStringAsync(); string[] splitChar = respo.Result.Split('"'); FilePath = splitChar[3].ToString(); Dispatcher.BeginInvoke(() => NavigationService.Navigate(new Uri("/VoiceSlider.xaml?FName=" + strFileName,UriKind.Relative))); } catch (Exception ex) { // Logger.Log.WriteToLogger(ex.Message); MessageBox.Show("voice not uploaded" + ex.Message); } }); } } catch (Exception ex) { //Logger.Log.WriteToLogger(ex.Message + "Error occured while uploading image to server"); } }