JW Player for Silverlight

由於要播放 WMV 或是 Windows Media Service 的影音串流, 使用原來的 embedded windows media player 的方式, 比較難跨不同瀏覽器及作業系統, 自從 silverlight 出來之後, 方便的跨瀏覽器和作業系統的特性, 方便讓原來使用Windows Media 格式的影音及串流在不同瀏覽器及作業系統間可以播放.

接下來看看這個很方便的影音播放器, JW Player, http://www.longtailvideo.com/players/, 最早期他是提供了 Flash Player 供應用, 後來有了 Silverlight 及 HTML5 支援影音後, 也陸續推出了 Silverlight 及 HTML5 的播放器.

我們今天要看的是 JW Player for Silverlight 的這個播放器, 其實使用上非常簡單, 可以到這裡下載: http://www.longtailvideo.com/players/jw-wmv-player/ 下載的程式碼內容就有簡單的範例可供應用, 例如要生成一個播放器可以在網頁上播放, 只需要以下的程式碼:

<div name="mediaspace" id="mediaspace"></div>
<script type='text/javascript' src="silverlight.js"></script>
<script type='text/javascript' src="wmvplayer.js"></script>
<script type="text/javascript">
    var cnt = document.getElementById("mediaspace");
    var src = 'wmvplayer.xaml';
    var cfg = {
        file:'video.wmv',
        image:'preview.jpg',
        height:'240',
        width:'440'
    };
    var ply = new jeroenwijering.Player(cnt,src,cfg);
</script>
分類
程式技術

silverlight大放送-hosting 10GB大空間

真的太棒的消息了. 微軟 live.com 線上服務提供免費的 Silverlight Streaming Hosting 服務.

這項服務不只有 hosting Silverlight 的 Application, 更進一步 hosting WMV 檔案(其實是 for silverlight 的媒體檔). 這個服務這樣免費的方式居然還提供了 10GB 的空間, 真的還蠻驚人的. (去年是 5GB)

我們來分析看看微軟的這項免費服務. 其實 Silverlight 已經出來了一年半了, 不過實際上使用的還真的不是很多, 案例能找到的相當有限, 微軟當時是有一個集結 Silverlight 應用的網站, 在其內的 showcases 收集了相當多的應用實例, 不過到目前為止, 也只有 326 個網站. 其實說少不少, 不過對微軟來說, 我覺得真的沒有達到預期的使用量及效果.

不過 Silverlight 真的是外行看熱鬧, 內行看門道, 大家的重心是放在和 Adobe Flash (或 Flex, AIR)的一個競爭產品, 但微軟才不將這個放在眼裡呢! 微軟的下一代重要 GUI 的基礎 WPF是非常重要的一個里程碑, 而在 WEB 上應用的 silverlight 是一個精簡的 WPF, 或是說 WPF 的子集, 而且到了 silverlight 2.0的版本, 更是強大, 已經是俱備了 .NET 的精簡 runtime, 地位不說也知道相當的重要. 對微軟來說, 是一個一定要攻下的山頭. 所以在推廣上, 一定是要用盡所有力氣來推廣. 無奈目前大多數的 web server 或 hosting 公司, 大多不支接支援 silverlight 1 的 xaml 或是 silverlight 2 的 xap, 導致在推廣上有蠻大的困難. 再加上 silverlight 的 “重影音” 特性, 也導致頻寬使用量極高, 在這些多重原因下, 微軟 silverlight streaming hosting 這項免費的服務就有他的必要性了.

有了這項免費的 silverlight streaming hosting 服務後, 相信對於推廣 silverlight 應該是更有利, 因為有了免費的空間, 免費的 server, 免費的流量, 看起來, asp.net 的 developer 不用這麼利多的服務還真是對不起自己咧.

接下來應該要上傳自己的 application 或是 video 來大顯身手一番囉. 若找不到品質好的影片, 可以到這裡下載: WMV HD Content Showcase

傳上了 Vista 內的範例影片的效果 (480p), 請參考範例: link

相關閱讀:
http://blog.anchi.tw/2008/06/windows-live-silverlight-stream-host.html
有感于微软SilverLight的推广

一個很不錯的 silverlight 案例:
SingTel Race 2008 : SingTel Grid Girls Heart Race

[2008/8/31 21:19]
Silverlight的狂潮已來… 該是著手好好學習及研究的時候了. 另外, Flash 還沒上手的 Developer, M$ 提供了另一個立足點平等的時間, 快點來學習這個很讚的好物囉….
微軟MSDN Silverlight開發工具及技術文件
Silverlight 中文維基
Microsoft Silverlight – Wikipedia
狂想成真時,談Silverlight 2.0
WPF, Silverlight 與 Silverlight Streaming

如何判斷WMV, WMA, ASF的檔案

wmv, wma 的判斷方式, 是利用這篇參考資料進行實作的:

http://www.microsoft.com/windows/windowsmedia/forpros/format/asfspec.aspx

裡面有一篇非常詳細的 asf 檔案格式的描述, 根據這篇的描述, 我們可以進行程式實作來判定 asf 及 wmv 和 wma, 主要的判定是利用 header 中的 stream type 來進行判斷的, 首先先讀出 asf 的格式檔頭, 讀出 guid 如下: (c#)

Guid guidASF_Header_Object = new Guid("75B22630-668E-11CF-A6D9-00AA0062CE6C");

Stream stream = new FileStream(filename, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(stream);
           
Guid guidTemp;
byte[] arrbyteGuid = new byte[guidSize];

arrbyteGuid = br.ReadBytes(guidSize);
guidTemp = new Guid(arrbyteGuid);

if (guidTemp == guidASF_Header_Object) // this file is asf format
{
  // .....
}

上面確定為 asf format (可能是 wmv 也可能是 wma), 接下來再進行確認其內容是否有 audio 及 video 的狀況, 來判定應為 wmv 或 wma.

我們必須先找出 header object 為 ASF_Stream_Properties_Object 的內容為 ASF_Audio_Media 或 ASF_Video_Media 的狀況, 通常 wma 僅有 ASF_Audio_Media, 而 wmv 為 ASF_Audio_Media 及 ASF_Video_Media 都存在, 所以就繼續找出 stream 的 type 即可, 程式碼在此, 給大家研究看看, 節省大家在判定這些檔案的時間囉!

checkASF.zip