0

我想知道,是否有办法在 Windows Phone 中播放媒体文件,而该文件仍在下载?

目前,我有一个具有功能的应用程序,允许在完全下载后下载和播放媒体文件。(我已经创建了这个功能,使用文章

所以,简而言之,首先,媒体文件是从 url 下载的,然后我使用 mediaElement 来播放它:

mediaElement.source = isolatedStorageFileStream;

之后,我可以通过我的播放器 UI 使用这个文件。

但是,我更喜欢让这个功能更好——允许在下载过程中开始播放文件。最后,这应该是这样的:开始下载文件,同时开始解密这个文件,同时允许播放文件的解密部分。解密到此为止吧(我已经写了一个下载文件的方法,那应该稍微改一下),主要的问题是如何允许两个并行任务:下载和播放。

第一个问题是:“MediaElement 是否只允许将“源”属性设置为仅实体(最终下载的)文件,或者它也可以在下载期间使用此流”?因为,我找到了一些信息,即:

“MediaElement 目前不支持流式传输。它在实际播放之前先加载整个文件。”

,虽然我不确定这个是指Windows Phone,但听起来相当焦急。

如果无法做到这一点,我还能用什么来处理媒体文件?我对下载视频不感兴趣,我们只限制 mp3 音频文件。

现在,下载过程是这样实现的:

WebClient webClient = new WebClient();
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
webClient.OpenReadAsync(new Uri(link));

然后在 OpenReadCompleted 中将下载文件流设置为 mediaFile 的源。

mediaFile.SetSource(isolatedStorageFileStream);

在此之后,我可以使用我的媒体文件。

我的问题有解决方案吗?我在 Windows Phone 线程和流方面相当新,不知道如何实现这样的功能。

PS当然,我试图找到一个类似的问题,但失败了。如果你知道的话,请给我一个链接。

PPS 对不起我的英语。

4

2 回答 2

0

您只能使用 BackgroundAudioPlayer 流式传输它。

于 2012-07-25T11:31:27.770 回答
0

您正在尝试读取正在使用的文件。我认为不可能。

但是:VideoRecorder 使用文件接收器工作,并设法同时捕获、写入和显示。建议你去那个地区看看

如何:在 Windows Phone 的相机应用程序中录制视频 http://msdn.microsoft.com/en-us/library/hh394041(v=vs.92).aspx

FileSink http://msdn.microsoft.com/en-us/library/system.windows.media.filesink(VS.95).aspx

于 2012-07-25T11:34:27.747 回答