Audio 在Windows Phone 8中以编程方式下载媒体文件
我们的应用程序是基于视频/音频的应用程序,我们已将所有媒体上载到Windows Azure上 但是,需要方便用户按需下载音频/视频文件,以便他们可以在本地播放 所以我需要以编程方式下载音频/视频文件,并将其保存在IsolatedStorage中 我们为每个音频/视频提供了Windows Azure媒体文件访问URL。但我被困在下载媒体文件的第一步 我在谷歌上搜索并发现了,但对于WebClient,我无法使用DownloadFileAsync函数 但我尝试了它的另一个功能DownloadStringAsyn,下载的媒体文件是字符串格式的,但不知道如何将其转换为音频(wma)/视频(mp4)格式。请告诉我,我该怎么做?是否有其他方式下载媒体文件 下面是我使用的示例代码Audio 在Windows Phone 8中以编程方式下载媒体文件,audio,video,windows-phone-8,webclient-download,Audio,Video,Windows Phone 8,Webclient Download,我们的应用程序是基于视频/音频的应用程序,我们已将所有媒体上载到Windows Azure上 但是,需要方便用户按需下载音频/视频文件,以便他们可以在本地播放 所以我需要以编程方式下载音频/视频文件,并将其保存在IsolatedStorage中 我们为每个音频/视频提供了Windows Azure媒体文件访问URL。但我被困在下载媒体文件的第一步 我在谷歌上搜索并发现了,但对于WebClient,我无法使用DownloadFileAsync函数 但我尝试了它的另一个功能DownloadStrin
private void ApplicationBarMenuItem_Click_1(object sender, EventArgs e)
{
WebClient mediaWC = new WebClient();
mediaWC.DownloadProgressChanged += new DownloadProgressChangedEventHandler(mediaWC_DownloadProgressChanged);
mediaWC.DownloadStringAsync(new Uri(link));
mediaWC.DownloadStringCompleted += new DownloadStringCompletedEventHandler(mediaWC_DownloadCompleted);
}
private void mediaWC_DownloadCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Cancelled)
MessageBox.Show("Downloading is cancelled");
else
{
MessageBox.Show("Downloaded");
}
}
private void mediaWC_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
statusbar.Text = status= e.ProgressPercentage.ToString();
}
要下载二进制数据,请使用
[WebClient.OpenReadAsync][1]
。您可以使用它下载字符串数据以外的数据
var webClient = new WebClient();
webClient.OpenReadCompleted += OnOpenReadCompleted;
webClient.OpenReadAsync(new Uri("...", UriKind.Absolute));
private void OnOpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
}
将其保存在工具箱中:)
公共静态任务下载文件(Uri url)
{
var tcs=new TaskCompletionSource();
var wc=新的WebClient();
wc.OpenReadCompleted+=(s,e)=>
{
如果(e.Error!=null)tcs.TrySetException(e.Error);
否则,如果(如取消)tcs.TrySetCanceled();
其他tcs.TrySetResult(e.Result);
};
OpenReadAsync(url);
返回tcs.Task;
}
你能提供一个完整的例子吗?调用DownloadFile后,如何将文件保存到isolatedStorage
public static Task<Stream> DownloadFile(Uri url)
{
var tcs = new TaskCompletionSource<Stream>();
var wc = new WebClient();
wc.OpenReadCompleted += (s, e) =>
{
if (e.Error != null) tcs.TrySetException(e.Error);
else if (e.Cancelled) tcs.TrySetCanceled();
else tcs.TrySetResult(e.Result);
};
wc.OpenReadAsync(url);
return tcs.Task;
}