从隔离存储播放媒体文件

时间:2010-10-26 13:22:08

标签: windows-phone-7 isolatedstorage

我正在读取一个从Web服务保存为字节流的wav文件,并希望在显示我的记录时播放它。 Phone 7 app。

我的方法是在导航到记录时将字节流保存到隔离存储中的wav文件,然后在单击按钮并将其播放时将媒体播放器(MediaElement1)的源设置为该源。 / p>

以下是我在“PlayButton”中的当前代码。 (大小匹配字节流但没有音频结果)。如果我将流设置为存储为资源的WAV文件,它确实有效,所以我可能只需要知道如何将Uri设置为独立存储文件。

(例如,以下代码有效)

Mediaelement1.Source = new Uri("SampleData\\MyMedia.wav",UriKind.Relative) Works
Mediaelement1.Position = new TimeSpan(0,0,0,0) ;
Mediaelement1.Play() ;

这是我的代码示例......任何想法?

IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication() ;
IsolatedStorageFileStream str = new IsolatedStorageFileStream(
    "MyMedia.wav", FileMode.Open, isf) ;
long size = str.Length;
mediaelement mediaelement = new MediaElement() ;
mediaelement.SetSource(str) ;
mediaElement1.Source = mediaelement.Source ;
mediaElement1.Position = new TimeSpan(0, 0, 0, 0);
mediaElement1.Play();

2 个答案:

答案 0 :(得分:2)

您不必创建2个媒体元素。只需直接在mediaElement1上调用.SetSource即可。

我有类似的代码,它将MediaElement源设置为隔离存储中的电影,并且工作正常:

using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
{
    using (var isfs = new IsolatedStorageFileStream("trailer.wmv", FileMode.Open, isf))
    {
        this.movie.SetSource(isfs);
    }
}

通过上述内容,movie是我已经在XAML中创建的MediaElement,并将autoPlay设置为true。

首次使用它时,我确实遇到了上述问题。

我建议尝试以下方法来帮助调试:

  1. 确保文件已正确写入隔离存储中并完整写入。

  2. 处理MediaFailed事件以找出它无法正常工作的原因。

答案 1 :(得分:0)

我注意到的一件事是,当设备连接到计算机时,音频无法正常工作......在尝试收听mp3文件时花了几个小时的时间。