我想知道,是否有办法在 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 对不起我的英语。