使用Silverlight十分钟构建一个视频分享网站

我记得从TechED 2006年开始,我就讲过关于国内视频分享网站过多的事情。那么今年将会更加多,因为Codeplex上出现了一个Video.Show项目,可以帮助大家在十分钟时间内构建成一个Silverlight视频分享网站。当然,这个消息其实思归同志早就介绍过了,今天我主要给大家一个示例网站,以及介绍其运行机理还有安装注意事项等。

昨天下班后,太太与大学同学聚餐。我想回家也没有什么事情做,于是就在公司里面研究了一下Video.Show。虽然还是RC版,但功能上已经基本完成了,所以想试试自己能不能在十分钟用其构建一个视频分享网站。于是说干就干,立即动手,我们部门在万网有一台服务器,为了不与其它人的工作成果冲突,我在上面利用虚拟化技术部署了一台虚机,这个虚机是Windows Server 2008 RC0 32位版,装上了.NET Framework 3.5正式版,以及SQL Server 2008 CTP。并且把博客堂的一个测试域名指向它,在上面做一些新版博客堂的测试工作。

环境都有了,先从Video.Show网站上下载了相关源代码,编译后部署到远程IIS上面去,然后在本地的IE8 (Internet Explorer 8 Alpha。 您没有看错,我用的是IE8,下次去贵公司拜访的时候,可以注意看一下我的浏览器呀,更加Web 2.0了)上找开测试地址,直接转向到了一个安装帮助的页面,原来需要我在服务器端再安装Expression Encoder,以及在http://silverlight.live.com上申请一个帐号(该帐号为每位申请者免费提供4G空间存放视频,微软员工甚至可以得到100G空间)用以存放视频。

所有都做完,却发现一个问题,在Windows Server 2008上启动不了Expression Encoder,查找了一下资料,才发现需要在Windows Server 2008上Add一个名字为Desktop Experience的Feature。在安装此Feature并且按照要求重启机器后,一切终归正常。按照要求注册帐号,上传视频,但等了不止十分钟后还是不见上传的视频出现。于是远程桌面到服务器上,发现上面有一个Visual Studio调试器信息,显示“Log Directory is not valid”。奇怪呀,默认安装的Expression Encoder按理说应该没有启动日志服务呀,这是怎么回事。回Video.Show的项目网站上查找,终于在Issue Track中找到有人也遇到了此问题,可是没有人有Response,于是我跟贴了一了。但这个大周末的晚上,肯定不会有人回复呀。时不我待,直接给Tim Sneath(他也是总部DPE的)发邮件询问一下。不到一分钟,邮件回来了,但只是告诉我他们正在跟踪此Issue,并且已经转交开发组密切注意。靠人不如靠已,我再次远程桌面到服务器上,查看IIS设置,在Application Pool里面的Advance Setting当中发现有一个选项是Load User Profile,其默认值是False,我选择为True。嘿嘿,一切正常了。

现在大家就可以来访问一下网站做一下测试了:http://beta.joycode.com。在上面您可以上传AVI,WMV,RM,RMVB,FLV,Quick Time以及其它您知道的视频格式,如果有任何问题,欢迎在评论中给出。本网站仅测试使用,将在一个月后下线,建议大家仅上传技术相关的视频,不要上传任何反动、色情、有版权问题的视频,如果发现,我会封掉所有视频上传权限。该网站仅只有1G内存,所以性能可能并不是非常好。

关于运行机理,其实非常简单,用户上传视频后,服务器端将将其上传到一个临时目录中,并且启动一个线程调用Expression Encoder将相关视频文件转换为VC-1编码的WMV文件,再将该文件组打包上传到http://silverlight.live.com上,所以您会发现视频播放有些慢,因为http://silverlight.live.com网站在国内暂时没有部署CDN服务,所以访问速度会有些慢。

访问:http://beta.joycode.com

BTW: Scott Guthrie先生将会携Silverlight,ASP.NET项目负责人在明年一月份访华,访华期间,博客堂将会组织相关社区见面活动,详情请参见本堂日后公告。

打赏作者

“使用Silverlight十分钟构建一个视频分享网站”的24个回复

  1. To guest:

    当然可以了,不过您得需要大量硬盘空间来存储视频,所以我这儿还是采用上传到Silverlight.live.com的方式了:)

  2. To tshao: Yes, he will be there.:)

    To helixapp: 没有要求装WinSvr 2008,只是我个人的喜好而已。而且WinSvr 2008非常好用呀:)

  3. To 算神: 你应该查一下服务器端的事件查看器,看看具体原因,另外,手工测试一下Expression Encoder是否可以正常工作。

  4. To 开心就好:服务器端已经弄好了,可以上传到Live.com那里,并且SQL Express那里也有数据了。不过新问题又来了,客户端无法看已上传的视频,silverlight报4001错误。客户端和服务器都安装silverlight 1.0的,不过服务器曾安装过silverlight的早期版本WPF/E,不懂是不是这个问题

  5. SL 10分钟就可以建一个没有创意的视频分享网站,而建一个有创意,或者说非传统的应用就会遇到很大的困难。包括视频格式的不兼容性,后台下载所占连接的局限性,无法访问本地文件,无法记Log,无法多线程(没有访问UI线程的手段),没有好的计时器,没有办法和jscript一样程度地访问DOM,没法跨窗口访问,没有辅助特性(帮助残疾人使用的),没有可测试性,可恶的SecrityCritical无处不在,本地化如此之麻烦。所以宣传归宣传,但不要以为真实世界的应用都那么幼稚,作为技术人员,考虑全面技术细节是首要的吧。不是光看到酷炫DEMO就会采用了。

  6. To 开心就好:看了http://silverlight.live.com上的视频,是有个名字在那但内容看不到。在服务器上测试了一下编码器是正常的,然后手动的把内容上传也是正常的,就是通过Video.Show上传就不行,我只是上传系统自带的clock.avi而已,才81K好小的:(
    会不会与服务器上的某些安全设置有关呢?问题还是找不出来:(

  7. To 装配脑袋:

    所谓的创意肯定都有一个落脚点,而不只是在那儿去依靠空想来去构建一个空中楼阁。您所说的这些缺点在这个Sample应用当中应该都有,而且在我看来,这个Sample应用并非“酷炫”,这个Start kit只是为了帮助想要创建SL视频分享网站的朋友解决几个关键性技术问题,比如如何使用Encoder进行视频格式转换、如何应用SL,如何与Silverlight streaming服务进行对接等等。

    在此基础上,我相信通过您的创意,再做些相应的代码工作,肯定可以做出有落脚点的空中楼阁。

  8. 试了一下,上传一个19.5M的文件,"Maximum request length exceeded"异常,Video.Show项目为什么没有提供一个silverlight写的上传组件呢?

  9. @flyprotoss: Please try http://video.bimbo98.com,任何你知道的视频格式均可以上传。

    原理就是在服务器上安装好各种视频格式的解码器(现在有很多软件提供多种格式视频的解码器,比如暴风影音,或者其它的,也有一些单纯的解码器打包,比如Vista Codec)Expression Encoder就可以转换相应格式的文件了。

发表评论