Windows phone 7 Windows phone 7媒体元素wav暂停

Windows phone 7 Windows phone 7媒体元素wav暂停,windows-phone-7,wav,mediaelement,Windows Phone 7,Wav,Mediaelement,我正在用麦克风录音。然后,我将带有wav头的PCM保存到隔离存储器中。之后,我使用MediaElement播放它。我想有能力暂停歌曲,但这似乎是不可能的。我曾尝试使用SmoothStreamingMediaElement,但问题是相同的——也许我做错了什么 如果有人知道如何暂停Microphone的歌曲,请帮助 这是我的代码,但暂停不起作用。也许我可以用不同的方式读文件 using (var store = IsolatedStorageFile.GetUserStore

我正在用麦克风录音。然后,我将带有wav头的PCM保存到隔离存储器中。之后,我使用MediaElement播放它。我想有能力暂停歌曲,但这似乎是不可能的。我曾尝试使用SmoothStreamingMediaElement,但问题是相同的——也许我做错了什么

如果有人知道如何暂停Microphone的歌曲,请帮助

这是我的代码,但暂停不起作用。也许我可以用不同的方式读文件

            using (var store = IsolatedStorageFile.GetUserStoreForApplication())
            {
                using (var audio = store.OpenFile(_song_path, FileMode.Open, FileAccess.Read))
                {
                    _media_element.MediaOpened += new RoutedEventHandler(_media_element_MediaOpened);
                    _media_element.SetSource(audio);
                    audio.Close();
                }
            }
暂停代码非常简单:)

为了进行测试,我制作了一个简单的项目,能够从web下载文件并从独立存储中播放。它适用于wmv和mp3,但不适用于wav。这里是VS项目


如果有人有任何想法,请帮忙。我可能已经侵入了整个互联网——这个问题没有解决方案

MediaElement
有一个方法。你试过使用它吗?

对于仍然对这个主题感兴趣的人(可能是通过搜索),我想在我的应用程序(Rapid Recorder)中分享一下我是如何处理这个问题的

我找不到合适的暂停方式,但很容易被伪造。单击“暂停”按钮时,您只需存储当前播放位置并停止播放。当按下播放按钮时,您可以在开始播放后再次设置位置。以下是一些片段:

private TimeSpan _pausedPosition;
暂停:

_pausedPosition = Player.Position;
Player.Stop();
要玩:

Player.Play();
if (_pausedPosition != TimeSpan.Zero) Player.Position = _pausedPosition;

是的,但对于流来说,它不起作用——这就是文档所说的。设置位置也是一样。@Michal文档中说,播放流媒体直播内容时,它会自动失败,而不是从文件流播放时。你试过这个吗?好的,你说得对。但是,它仍然不能处理wav文件,为什么?wmv-works,mp3-works,wav-NOT!我尝试了5个不同的wav文件。mediaElement1.CanPause始终返回“puseValse”@Michal如果你从手机上获取保存的文件,它是否可以在PC上暂停播放?你检查过保存的Wav()的功能了吗?我以前在这个页面上看到过,但它告诉我的不多。我不知道什么是“LPCM”、“MS ADPCM”等等。然而,我检查了以下wav文件:6000Hz,8比特,它不工作。为了进行测试,我制作了一个简单的项目,能够从web下载文件并从独立存储中播放。它适用于wmv和mp3,但不适用于wav。这是VS项目,我怀疑您的MediaStreamSource可能有问题。我能够在WP7上播放/暂停来自自定义MediaStreamSource的PCM音频,没有任何问题。您能提供更多的代码来显示何时/如何调用Pause()?您能给出示例代码吗?你是怎么做到的?
Player.Play();
if (_pausedPosition != TimeSpan.Zero) Player.Position = _pausedPosition;