【问题标题】:Play wav file in isolated storage with media element使用媒体元素在隔离存储中播放 wav 文件
【发布时间】:2014-04-26 06:42:29
【问题描述】:

我创建了一个小应用程序来录制和播放它,使用此代码制作一个录制按钮和一个播放按钮。

我测试了应用程序,录音机工作正常(我使用“Windows phone power tools”从 WP 模拟器的隔离存储中获取 tempAudio.wav 并且可以播放此音频文件),但播放按钮没有播放声音,我找不到 btPlay 按钮有什么问题:(

XAML 代码(两个按钮是来自 coding4fun 工具包的圆形按钮和圆形按钮)

<StackPanel Orientation="Horizontal">
    <toolkit1:RoundToggleButton x:Name="btRecorder" IconUri="..." Checked="btRecorder_Checked" checked="btRecorder_Unchecked"/> 
    <MediaElement x:Name="meVoicePlayer" AutoPlay="False"/>
    <toolkit1:RoundButton x:Name="btPlay" Click="PlayAudio_Click" IconUri="..."/>
</StackPanel>

c#代码

MicrophoneRecorder recorder = new MicrophoneRecorder();

private void btRecorder_Checked(object sender, RoutedEventArgs e)
    {
        recorder.Start();                       
    }

private void btRecorder_Unchecked(object sender, RoutedEventArgs e)
    {
        recorder.Stop();
        SaveTempAudio(recorder.Buffer);
    }

public void SaveTempAudio(MemoryStream buffer)
    {
        using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
        {
            var bytes = buffer.GetWavAsByteArray(recorder.SampleRate);                
            using (IsolatedStorageFileStream audio = new IsolatedStorageFileStream("TempAudio.wav",FileMode.Create,isf))
            {
                audio.Write(bytes, 0, bytes.Length);
            }
        }
    }

private void PlayAudio_Click(object sender, RoutedEventArgs e)
    {
    using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
        {                
            using (IsolatedStorageFileStream audio = new IsolatedStorageFileStream("TempAudio.wav",FileMode.Open,isf))
            {
                meVoicePlayer.Stop();
                meVoicePlayer.SetSource(audio);
                meVoicePlayer.Position = new TimeSpan(0, 0, 0, 0);
                meVoicePlayer.Play();
            }
        } 
    }

【问题讨论】:

    标签: c# windows-phone-8 isolatedstorage mediaelement


    【解决方案1】:

    您提到的是模拟器。这是唯一的地方,你的音频不播放?在这种情况下,答案很简单:MediaElement 不支持在模拟器中播放。请参阅平台说明:msdn上的“Silverlight for Windows Phone”

    【讨论】:

    • 这太奇怪了!我在“meVoicePlayer.Play();”行上放了一个断点开始,音频播放! - 删除那个断点并重新开始,音频不播放,再次@@真的很困惑@@
    • 这是因为流“音频”在您离开使用范围后被释放{}。删除 using{} 并在按下“停止播放”时释放流
    • 我尝试删除“using”并手动使用isf.dispose(),但问题仍然存在
    【解决方案2】:

    您必须使用“Emulator 8.0 Update 3 WVGA 512MB”。效果很好

    【讨论】:

      猜你喜欢
      • 2013-03-17
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多