加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读