一次解決您對 .NET Framework、WPF、WPF/E、Silverlight、XAML、XBAP、Expression Studio( Web / Design / Blend / Media)… 所有的疑問


台灣市面上的爛書,90% 以上都是抄自使用手冊 ( 英翻中 ?! ),要不就是每一本書的前 2 / 3 都差不多 凸 =..= 凸。於是乎【火星人】大神俺就佛心大發:

把比上述更多的東東,全都建在 Blogger 上 !  ★ 放心,內文都是中英文對照 ★ ( 這些東東實在是太新了,俺寫的也難免會有錯誤,所以會不斷修正之 )


Silverlight Streaming

2007‧0717
 
最簡易的方法
 
 
開啟 Expression Media Encoder ( 下載 )
按左下方的 Import,載入視訊檔:( 常見的視訊檔都支援:*.avi、*.asf、*.mpg、*.wmv )
 

 
 
1. 切換到 Output 面板
2. 選擇一個播放面板的板型
3. Encode 之
 

 
  如果您右側的面板沒有2. 所述的 Template ( 樣版 ) 可供挑選
  請到 Expression Media Encoder 的安裝檔案夾 > Templates
  把 en 的檔案夾複製再貼上,然後更名為 zh-tw,重新啟動 Expression Media Encoder 即可
 
  
 
 
開始編碼
 

 
 
如果您沒有變更預設值,那麼 Encode 之後,會在 檔案總管 > 桌面 > 我的文件 > Expression > Expression Media Encoder > Output
產生一個檔案夾
 

 
 
點選上圖中的 Default.html,就可以看到下圖的 Silverlight
 

 
 
這是最簡易的方法,就只是載入視訊檔 → 挑一個面版 → Encode → 搞定
也可以上傳到您自己的硬碟空間 ( 虛擬主機 )

 
 

 
 
 
Silverlight Streaming
 
Silverlight Streaming 是微軟專為 Silverlight 的視訊檔所提供的免費空間 ( 4GB )
 
 
Expression Media Encoder 輸出的檔案夾中,有下述一堆的檔案,主要是考慮到微軟相關的軟體可以再接手加工
不過若是要上傳到 Silverlight Streaming,有紅點的檔案就用不到了:
 

 
 
在上述的檔案夾 > 右鍵 > 新增 > 文字文件 > 把檔名改成 manifest.xml ( manifest:送貨單 )
再把下面的語法 Copy / Paste 到 manifest.xml 中,存檔

<SilverlightApp>
<loadFunction>StartWithParent</loadFunction>
<jsOrder>
<js>MicrosoftAjax.js</js>
<js>PreviewMedia.js</js>
<js>EmePlayer.js</js>
<js>player.js</js>
<js>startPlayer.js</js>
</jsOrder>
</SilverlightApp>

 
把紅點之外的檔案與這個 manifest.xml,壓縮成一個 zip 檔(請注意:zip 檔中,不能有檔案夾)
 
 
再來,到微軟的 Silverlight Streaming 的網站
 
如果您還沒登錄 Hotmail,就可以看到 Get it free 的按鍵
 

 
 
按了 Get it free 之後,就會跳到這個畫面
( 簡單來說,就是要你先有 Hotmail 的帳號才可以使用就對了,such as Google 的所有線上服務 )
 

 
 
輸入帳號與密碼
 

 
 
可以上傳了,上傳的東東就是剛才那個 zip 檔
請注意:此時左側的選單,是停留在 Manage Applications ( 也就是說若是在 Hotmail 已登錄的情況下,以後直接切換到這裡即可操作 )
 

 
 
必須先給上傳檔一個名稱 ( Application Name ),然後開始上傳
( zip 檔案中的視訊檔,必得小於 22 MB, 即 300 KB / 10 分鐘 )
 

 
 
 
上傳 OK 了,其中的
‧Mars001:就是前述的 Application Name
‧Upload Updated Application:更新檔案 ( 一樣是整包 zip 檔上傳 )
‧Launch Application Test Page:測試頁
‧Delete Application:刪檔 ( 請小心,這步驟不能 undo )
 

 

上述三欄:

1) Copy / Paste 到 <head> 中
2) 置入到您網頁中
3) 把這段語法存成 CreateSilverlight.js,然後擺在 <head> 中 ( 路徑得視情況修改之 )
 
 
使用微軟的硬碟空間、微軟的頻寬,然後把串流視訊 ( Stream Video ) 擺在您自己的網頁,播放介面 ( XAML ) 還可以自己大改一下、…
酷吧 !! ( 不知道還要效果爛爛的 YouTube 幹嘛 )

 
 
 

 
 
 
Silverlight Streaming 的 Blogger 用法
 
 
若是您以上面 Silverlight Streaming 的方法貼到 Blogger ( 或是其它的 blog ),通常都會被擋掉
這是因為 Blog 會限制語法,所以要把語法小改一下,才可以貼到 Blogger 中:
 



 
 
請先看看前面 Silverlight Streaming 中的語法,計有三段:
 
 
第一段
 
<script type="text/javascript" src="http://agappdom.net/g/silverlight.js"></script> ← 呼叫 Silverlight.js
<script type="text/javascript" src="CreateSilverlight.js"></script> ← 呼叫 CreateSilverlight.js
 
 
第二段
 
<div id="Wrapper_Mars001" style="width:500px; height:400px; overflow:hidden;"></div> ← 以 div 的方式來置入 Silverlight
<script type="text/javascript">
var Wrapper_Mars001 = document.getElementById("Wrapper_Mars001");
CreateSilverlight();
</script> ← 套用 CreateSilverlight(),div 才會發生作用
 
 
第三段 ( 即:CreateSilverlight.js )
 
function CreateSilverlight(){
Sys.Silverlight.createHostedObjectEx({
source: "streaming:/8697/Mars001",parentElement: Wrapper_Mars001});
}
 
 
 
Silverlight 以 <div> 的方式置入,不外有兩種考量:
 
‧DIV ( 含 CSS ) 已是現在網頁編製的主流,也易於與後端整合 ( 以 Table 切網頁是很過時的方法 )
‧DIV + JavaScript,可以避免如 <object>、<embed> 等 ActiveX control 的置入方式所產生的虛線
 
 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
 
呼叫 Silverlight.js 的這段語法一定不能少:( 而且一定要放在 <head> 中 )
 
<script type="text/javascript" src="http://agappdom.net/g/silverlight.js"></script>
 
( 這個 Silverlight.js 是 Silverlight Streaming 專用的,所以會與 Expression Blend 所產生的 Silverlight.js 有一點差異 )
 
 
 
如果是一般的網頁 ( 非 Blogger )、一個頁面中只有一個 Silverlight,那麼 CreateSilverlight.js 的這段語法擺在 <head> 中是 OK 的:
只要在置入 Silverlight 的 DIV 後面,擺一段 Script 來呼叫與設定其中的 CreateSilverlight() 函數即可 ( 即上述的第二段語法 )
 
不過如果一個網頁內要置入兩個以上的 Silverlight,那麼 CreateSilverlight.js 這段語法就會造成困擾,所以要改寫一下
改寫的原則就是把 CreateSilverlight.js ( 即第三段語法 ) 直接寫到第二段語法中:
 
<script type="text/javascript">function CreateSilverlight(){Sys.Silverlight.createHostedObjectEx({source: "streaming:/8697/Mars001",parentElement: Wrapper_Mars001});}</script>
<div id="Wrapper_Mars001" style="OVERFLOW: hidden; WIDTH: 500px; HEIGHT: 375px"></div>
<script type="text/javascript">var Wrapper_Mars001 = document.getElementById("Wrapper_Mars001");CreateSilverlight();</script>

 
 
 
Script 中的語法不要按 Enter 鍵人工換行,就可以避開 Blogger 的限制
 
 
故只要在 <head> 中呼叫 Silverlight.js,再套用上面的語法
不只可以在一個頁面中置入兩個以上的 Silverlight,同時只要不人工換行,也可以貼在 Blogger 中
簡單吧 ! 俺很天下無敵吧 !! ^+++++++++++++++++++++++++++++++++++++++++++^

筆者搞的一些小作品 筆者搞的 Flash 破解 Silverlight 俺搞的 30 首小曲子 ( 每首約花半個小時編曲 ) 在 PDF 檔嵌入 Flash ( 丑角與交趾陶的編製過程 ) IE-Based CD Title ( 筆者八百年前搞的 )