我正在为SmoothStreaming资产构建一个预下载程序,我们检索客户端清单,提取视频和音频的比特率,通过XDocument迭代片段定义然后(这里是我被困住的地方)从SEQUENTIALLY请求片段服务器。我们的想法是模仿媒体元素并将片段缓存在客户端上以供离线使用。所有的解析和uri构建都很好。我陷入了网络电话的线程和异步方面。
目前我有(很多缩写):
client = new WebClient();
client.OpenReadCompleted += GetClientManifest;
在GetClientManifest中:
using (Stream str = e.Result)
{
// I have the manifest. I need to parse it and make the fragment calls
}
我的第一个块(抱歉是厚)是在GetClientManifest里面,我正在回调,所以如何开始解析和片段进入一个开放的Web请求?
这只是一个关于启动新网络客户端的问题吗?
我也无法想出一种有效的方法来制作片段请求。它们必须严格按顺序排列,在视频片段和音频片段之间交替。
所以我正在寻找类似的东西:
foreach (var urlPair in fragmentList)
//urlPair is the audio and video urls for the current fragment
{
//get the video fragment and save it
//get the audio fragment and save it
}
但是这个循环必须发生在GetClientManifest之外(完成之后),不是吗? 请记住,这是从Silverlight(浏览器外)客户端调用的。出于某种原因,我无法等待工作(使用任务)。
提前感谢和周末 马克D