Silverlight对视频流HTTP请求头的要求

Silverlight对视频流HTTP请求头的要求很BT,折腾了一天才发现这个问题。

Silverlight播放视频时,视频源可以是其他域的,即是可以跨域的。读取其他数据是不可以跨域的,比如XML数据等。

Silverlight是集成了Windows Media Player的解码器的,在没有安装Windows Media Player的情况下,只要安装了Silverlight就可以在Silverlight中播放WMV、ASF、MP3等格式的视频和音频文件。Silverlight 1.1 Alpha版安装包总共不到5M,是WPF的精简版,因此解码器精简的程度也可见一斑。

自己弄了个HTTP服务,HTTP响应头并不规范,但这些视频流能在Windows Media Player或者WPF下播放,却不能在Silverlight下播放。但是如果是放在IIS下则能正常播放,于是开始观察HTTP请求,看看二者有什么不一样。然后按照IIS下的HTTP请求头重写了HTTP服务,使其HTTP响应头与IIS下的一样,结果发现果然能够正常播放了!再经仔细测试,发现HTTP响应头中只要含有协议、状态和Content-Length就可以了。…

让Silverlight的大小随浏览器大小变化

当浏览器里只有一个Silverlight,没有其他内容时,我们会希望它能够自适应浏览器大小(屏幕大小),flash在解决这个问题时很为难,而用Silverlight则可以轻松解决自适应大小的问题。

首先,在你的HTML页面中,修改这一行CSS代码:

.silverlightHost { width: 640px; height: 480px; }

改为:

.silverlightHost { width: 100%; height: 100%; }

那么,你现在的Silverlight就是自适应大小的了,但是还有很多问题要解决的,比如你的背景图片大小也得跟着改变了,还有元件布局也得跟着变……因为现在Silverlight还不能像WPF那样自动布局,只能指定绝对位置。不过还好,当Silverlight大小发生变化的时候存在BrowserHost.Resize这样一个事件,我们为这个事件写一个EventHandler就好了,而当前Silverlight的尺寸大小则可以通过BrowserHost.ActualWidth和BrowserHost.ActualHeight来获取,那么手动布局也就还算方便了,不过要是能使用相对位置自动布局就更方便了,不知道Silverlight…

Silverlight使用全屏实在是简单


在网页中浏览视频,使用全屏播放往往能够给用户更好的体验,Silverlight对全屏支持很好,简单几行代码就能搞定全屏的问题。

BrowserHost对象有个属性就是IsFullScreen,设置其为True时就可以实现全屏,设置为False就可以退出全屏,默认情况下按ESC时就可以退出全屏。后来发现,按Alt+Tab也可以,^_*

简单的代码如下:

public void Page_Loaded(object o, EventArgs e)
{
//Required to initialize variables
InitializeComponent();

fullButton.MouseLeftButtonDown += new MouseEventHandler(bgRect_MouseLeftButtonDown);
}

void bgRect_MouseLeftButtonDown(object sender, MouseEventArgs

[翻译]The Web Is Dead

The Web Is Dead
(Long Live the Web!)
Web死了
(Web万岁)

by Rockford Lhotka
August 1, 2007
http://www.ftponline.com/vsm/2007_08/magazine/departments/guestop/

============================================
译者Fdream注:
似乎Web正如日中天,但是不难发现,Web技术的发展却远远超出了最初的HTML,各种个样的技术的出现,是否意味者Web已经结束了或者即将结束?如果Web结束了,我们用什么来替代Web所带来的一切方便和好处?

该文作者是微软公司的地区主管,文章中极度地对Silverlight进行了赞颂,但是从中我们也可以对Web的未来有所遇见,也可以看到微软对Web的一些策略。
============================================…

Beta版终究是Beta版

先是Silverlight升级不能正常使用,后来一冲动把Visual Studio也升级到了2008 Beta 2,然后把SilverlightTools也换成了对应的Alpha版本,再装了个最新的Silverlight 1.1,自以为没有什么问题了,建了个Silverlight项目,却发现找不到引用,摸索了半天,最后在网上搜到说要更新SivlerlightTools,微软不久前才发布了一个补丁,于是呼哧呼哧地跑过去下那个补丁,发现它的发布时间是8月10日,而我下载这个东西的日子恰好是8月9日!真是fz(发指)啊!

还好,网速比较快,没用多久,SilverlightTools下载下来了,按照要求,先装Silverlight 1.1,再装Silverlight Tools,好吧,总算装好了,引用也可以找到了,只是TNND写代码的时候没有代码提示和自动完成了……软件不可以fz到这种程度!

也许是我系统的问题,我们到测试服务器上也装一个吧,看会不会有代码提示和自动完成。还好安装的过程不需要人工干预,今天来看,已经装好了,嗯,还有代码提示,那好吧,我用远程控制………

Frame里的网页不能透明?

奇怪,Frame类有个Opacity属性,设置其值为0.2一点反应都没有,又貌似没有其他属性可以设置透明度,难道是bug?如果是这样,那么Frame肯定是不能实现有透明度变化的动画了……

用Google搜了一下,找到这样两个帖子:

The animation worked when applied on other elements in a test project I made, including a Frame element with just a solid red background. I think it’s just a limitation of the Frame element when rendering HTML. It uses the WebBrowser control which is just a wrapper around the MSHTML ActiveX control, I believe.

Hmm, it might be fun to write

奇怪的Silverlight更新

写了两个多星期的WPF Application,今天需要在界面上增加点东西,想到用Blend 2来编辑XAML文件(画图还是比写代码方便很多),但是只有在Silverlight项目中才能方便地用Blend 2打开XAML文件,于是打开了一个最开始接触Silverlight时的几个例子,习惯性地Ctrl+F5,浏览器却给了我一个很大的惊奇:弹出了一个错误提示框:

The WPF/E installed on your system is no longer valid. Please go to
“http://go.microsoft.com/fwlink/?LinkID=81210&clcid=0x409e” for the latest version.

怏怏地跑到Silverlight官方网站去看看最新版本,找了半天还是只有Silverlight 1.1 Alpha-_-。好吧,我就当这个是最新版本了,重新下载了一遍,安装,按要求重启,打开项目,再编译运行,这次更是诡异了,浏览器一片空白,状态栏提示有JS错误。看看页面源代码,发现document.getElementById后的参数和div的id名称不一致了,我没有改过代码的呀!再开两个项目,发现还是这样,诡异的Orcas(Visual…