随着互联网技术的发展,视频点播服务已经成为日常生活的一部分。YouTube的成功就是最好的证明。在美国,发现了hulu.com,这是一个非常酷的服务,遗憾的是它目前只在美国提供服务。hulu.com提供了一种全新的观看体验,用户可以通过浏览器随时随地免费观看他们喜欢的视频,包括当前和经典的电视节目、全长电影、网络原创内容以及各种剪辑。
在探索如何构建类似hulu.com的网站时,了解到Scott Guthrie在mix 10主题演讲中提到,用于广播冬季奥运会的媒体播放器的所有源代码都可以在CodePlex上找到。这激发了创建一个类似hulu.com的网站的兴趣。
在开始之前,要明确声明:这里展示的只是一个非常基础的演示,它不会涉及到规模、搜索或内容质量等问题。将使用一些mix视频,允许用户浏览视频集合,并按需播放。这个演示将只关注视频点播场景。Silverlight Media Foundation还涵盖了实时视频,这可能会在未来的文章中讨论。
首先,创建了一个非常基础的模型来存储视频元数据:
public class Video
{
public string Title { get; set; }
public string Description { get; set; }
public string Thumbnail { get; set; }
public string Source { get; set; }
public bool IsSmoothStreaming { get; set; }
}
接下来,创建了一个ViewModel来加载一些示例数据(实际上应该存储在数据库中)。VideosViewModel有一个视频集合,并跟踪当前选中的视频。
public class VideosViewModel : ObservableObject
{
public List<Video> Videos { get; set; }
public Video CurrentVideo { get; set; }
}
如果CurrentVideo发生变化,将手动在播放器中开始播放视频。以下是播放器的XAML代码:
<p:Player x:Name="player" />
以下是在播放器中显示视频的辅助方法:
private void PlayVideoOnPlayer(Video video)
{
CoreSmoothStreamingMediaElement me = new CoreSmoothStreamingMediaElement();
if (video.IsSmoothStreaming)
{
me.SmoothStreamingSource = new Uri(video.Source);
}
else
{
me.Source = new Uri(video.Source);
}
me.AutoPlay = true;
player.Content = me;
}