windows-phone-7 – 播放时出现问题,WP7中录制的音频
发布时间:2020-12-14 05:43:01 所属栏目:Windows 来源:网络整理
导读:嗨开发人员, 如果我们将录制的语音保存为mp3文件.我们在打开文件时收到错误,因为Windows Media Player无法播放该文件.播放器可能不支持该文件类型,或者可能不支持用于压缩文件的编解码器. 请提供解决方案来克服这个问题…. 这是我的源代码 namespace Windows
嗨开发人员,
如果我们将录制的语音保存为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 我的源代码上传一个音频到PHP服务器: 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"); } } 解决方法
首先,Windows Phone不允许记录.mp3文件.因此,Windows Phone播放器将无法播放您正在保存的.mp3文件.
看看this.这个演示适用于录制.wav文件. 如果你想保存其他格式,如.aac,.amr,那么用户AudioVideoCaptureDevice类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows – 我在哪里保存我的Haskell“模块”?
- windows – 作为服务运行时,QtService应用程序无法连接到系
- windows – Haskell和Docker合理部署的图像大小?
- 是否可以在Windows中为每个应用程序设置ANSI编码
- DLL的显式调用与隐式调用
- 如何通过名称引用Windows窗体控件(C#/ VB)
- 如何更改?pcAnywhere?IP?端口
- 高收益的笨办法:暴破在Windows提权中的应用
- windows-server-2008-r2 – 安全通道信任验证失败
- windows-server-2008-r2 – 如何在Windows Server 2008 R2上
推荐文章
站长推荐
热点阅读