在Silverlight中我们可以通过设置HttpWebRequest.AllowReadStreamBuffering为false,或者使用HttpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead)来实现在回调函数中不必等到Stream完全下载完成后才能读取数据,以便计算下载速度或进行其他处理。然而在WPRT应用中(WinRT未受影响)这两种方式都失去了效果,见示例:

Read the rest of this entry »

微软搞出的这个Universal应用本意是不错的,但是只是方便了WinRT应用到WPRT应用的移植,从WP8 Silverlight应用移植的话有很多坑,而且MSDN上面又没有一个完整详尽的说明,大部分新的实现方法都需要开发者自行摸索。所以我打算写这个系列文章来记录一些我的发现和经验,以帮助后来者少走一些弯路,节省一些时间。

Read the rest of this entry »

实现GetSampleAsync()

接下来需要实现MediaStreamSource.GetSampleAsync()。当系统解码器需要新的视频或音频sample的时候会调用这个函数,这个函数需要根据MediaStreamType返回相应的下一个sample。至于是预加载所有的sample还是用on demand的方式获取下一个sample都可以,前者可能会在播放视频的头几秒有所卡顿,后者可能会导致seek的过程略长。

Read the rest of this entry »

众所周知,Windows Phone SDK自带的MediaElement不支持FLV容器。但是根据MSDN所言[1],实际上Windows Phone在硬件上支持AAC音频和H264视频的播放。恰巧大部分网络FLV视频都是AAC+H264编码的,于是理论上我们就可以通过实现MediaStreamSource来让MediaElement认识和播放FLV视频。我在开发哔哩哔哩客户端的时候就采用了这个技术。

本文同时适用于Windows Phone 7/7.1和Windows Phone 8。在本文之前,你不会在互联网上获得任何关于如何在Windows Phone上使用MediaStreamSource播放FLV视频的完整关键代码。

Read the rest of this entry »

近年来淘了不少中古PC98软盘,都是不远千里从11区寄过来的,让人感动的是虽然过了十多年但是软盘被保存得依然完好。不过软盘的保质期不长,说不定哪天就挂了,所以保险起见还是制作一张FDI镜像文件比较好。软盘本身就留作历史的记忆吧……

Read the rest of this entry »

在开发中,有时候我们想对HTML文件进行编辑后显示,此时一般会直接调用WebBrowser的NavigateToString()方法。但是这样处理后页面中的锚点会失效,点击对应链接不会自动跳转到网页的对应位置。有两种方法可以解决这个问题。

Read the rest of this entry »

Slider控件在WP8里面改动很大,如果直接使用WP7上的Control Template的话,会导致控件失去效果。

解决方法是使用新的Control Template:

Read the rest of this entry »

World Line
Time Machine
Online Tools