首頁 »
2008/01/03

MMS影音串流之在Silverlight應用

Mshow Silverlight
最近設計了一個ASP.NET + Silverlight + AJAX混合體的影音資料庫網站,而該網站是利用MMS串流影音來進行wmv影片之播放,但其中有關WMV影片之最佳化編碼有一點可以跟大家分享


而祭司負責完成的網站正是最近才上線的微軟MShow網站,其網址為:
http://www.mshow.com.tw

Mshow Silverlight

而會協助設計這個Silverlight網站,首先得感謝微軟Moli及負責部門的朋友給我這個機會,而這是我個人第一次將Silverlight技術導入正式商業網站之中的案子,並且對象是全球數一數二的軟體公司網站,很多人問有什麼公司網站在用Silverlight ?會這樣子問的原因是,在許多設計網站的Programmer及Designer心中一直有一個疑惑,Silverlight真的能取代Flash,而導入公司網站之中嗎?

而眾多人等,無論微軟或非微軟的人員會有這樣子的疑惑是很正常的,畢竟Adobe的Flash及Flex在向量動畫及RIA的地盤是先驅,是佼佼者,早已身經百戰,且幾乎是RIA向量技術市場上的獨大;然而微軟Silverlight後起之秀目前正式版僅是1.0,而比起Flash不知幾代的成熟產品,無怪乎大家心中會有所疑惑。

而既生瑜,何生亮?我想這是千古以來英雄對上英雄的感嘆,凡勝者為王,敗者為寇,始終是戰場或市場上的硬道理,贏家通吃,輸家落落寡歡,甚至是抑鬱而終也是不乏例子,例如最近AOL宣布Netsacpe己經不再推出新的版本了,而這訊息等同宣告Netscape壽命將盡,留給世人的是當初它所掀起的瀏覽器熱潮,也帶動Inernet網站的熱絡盛況,然而時光荏苒,殊榮不再;當後起之秀Silverlight對上Flash會是什麼樣的光景呢?

基本上,Flash市場佔有率及採用率從現在開始會逐年下降萎縮,Why?呵~問你自己,其實因為自此之前Flash在向量RIA市場幾乎是一支獨秀,換句話說也就是達到90%~100%的佔有率,而當Adobe是RIA市場上的唯一主要供應者,當然無所懼;然而若有第二個供應商推出替代性產品時,當然Flash市場只有被瓜分的份,而Silverlight的佔有率當然逐年提升也是幾乎可以猜想得到的。

且這個第二個供應商,第二個競爭者,不是鄉間草莽或村中野夫,正是過去在競爭市場上對奕過幾大強者,例如Office打垮Lotus 123,Windows OS消滅Novell Netware OS,Browser戰爭壓倒性的征服Netscape,在遊樂器產品上對上SONY的PS,XBOX 360的成績在美國市場還略勝一些;當然,我並不是純粹的微軟主義者,盡往好處地談,因為我本身也不相信,有任何公司或個人,一生做事都是諸事順遂,而未曾遭逢失敗,因為世上不會存在這樣的公司,Why?古云:「無外患敵國者,國恒亡。」,今云「:公司要有存亡之危機意識。」(出自Intel的葛洛夫),而這兩句話都在說明一件事,若一家公司不曾接受過競爭者的強力挑戰,讓全公司上下戰戰競競,怎能在物競天擇的淘汰賽中存活?又怎能在自身的生命演化或改造更優良的DNA基因呢?所以微軟也有偶逢出戰失利的時候,例如近幾年來的Google霸主,Aplle的iPod,亦或紅到不行的YouTube,都是微軟心中掛念的幾個重要戰場,甚至在某些面向也會對軟體帝國有所動搖。

所以我不會說微軟推出什麼產品都是必勝的,因為真的得視產品的強弱,評估天地人之利弊,再衡諸客觀環境的影響力,才能決定一項產品或技術是否能夠成功,而Silverlight對上Flash+Flex有什麼樣的優勢,能夠讓祭司斷定它一定會成功呢,以下是我條列一些主客觀因素:
1.微軟具備雄厚的人力與財力。
2.微軟擁有全球優於競爭者所能提供的客服與技術支援人力與服務。
3.Silverlight不但可適用於消費性網站,亦可與企業級的ASP.NET、ASP.NET AJAX及SQL Server資料庫進行整合,符合企業的需要,而非僅是飛來飛去的影音動畫,因為上市上櫃公司需要的是能夠提高企業生產力的實際程式能力。
4.Silverlight可以與Visual Studio進行整合。
5.Silverlight 2.0將提供大量控制項,降低開發成本與難度,和現在的.NET CodeBehind模式一致,讓程式開發人員有高度熟悉認同感。
6.微軟對於全球數百萬的.NET 使用者及企業有著高度吸引力,而這是Flash擅長於影音多媒體較難產生吸引力的一個弱點。
7.其他列也列不完的理由....你也可以試著條列你認為會成功的理由。

在這裡並非要唱衰Flash,而討好Silverlight,原因為何?因為祭司根本沒用Flash開發,將來也不打算大力學習Flash(但我得聲明Flash是一個蠻優的產品),因為我想要的是能夠在.NET及Visual Studio完全整合的RIA技術,自然是Silverlight不二人選,Silverlight想和ASP.NET整合就整合,想用AJAX呼叫後端就用AJAX,想用到最新的WCF,WorkFlow及LINQ也不會是問題(LINQ要等Silverlight 2.0),所以以開發企業網站為焦點的.NET Programmer或技術主管,自然會對Silverlight有興趣的多。。。

至於我本身比較不偏好常拿Flash與Silverlight進行各種功能比較,因為兩者的比較,就"採用"上是沒有意義的,各位可以想想Flash已經出來幾年了?Flash已經到了9.0,若你(或你公司)想用Flash,又何必漫長等待若干年後,才猛然想起要用Flash或Silverlight哪個好好?!看看Silverlight 1.0才第一個版本?Flash已到9.0版的,所以在邏輯上是說不通的,而真正的實相是,想用Flash的族群早就用了,不想用的幾乎恒不想用(或因整合問題而沒法用),而Silverlight的出現是對現今以HTML為基底ASP.NET所進行的一種整合或提升,所以.NET族群會想採用的人,必定是逐年提升的;或者將來Silverlight 2.0 & 3.0時,新專案時,乾脆將ASP.NET直接取代掉也亦無不可,全新的案子就用全新的RIA向量技術來Desgin也是可行的,但前提是Silverlight已達到至少ASP.NET水平,或高過於它...

或者可以換個比喻,你買車時希望是能夠載下一家5口人(比喻你的重點在企業級的.NET程式設計,期望Silverlight能和.NET整合),當你去汽車門市看車時,你絕對不會認真向業務員要求只能載兩人的漂亮雙門跑報價(比喻Flash有著優秀的影音動畫能力與設計工具,挺對Designer設計師的胃口,但與企業程式完全整合仍力猶未逮),所以Silverlight與Flash在向量能力看似競爭,但在背後重要因素上,幾乎是不競爭的,所以比較是無意義的,頂多"評比"是可以當作改進的一項借鏡或建議,但幾乎不會是影響採用與否的決策性關鍵。


OK...以上是附帶向大家解釋諸位心中Flash vs. Silverlight的疑問的闡述,那麼現在回到正題,今天主題是如何最佳化MMS影片的編碼,為什麼會特別提到這個wmv影片最佳化編碼,因為在製作MSHOW網站時,我老覺得有幾支影片播放起來是卡卡的,也就是會有所停頓,因為我不想讓人覺得是不是祭司Silverlight程式寫的不好?或者是Silverlight沒法播放平順的影音?最後我去研究一下這個問題(我在大學時成立過多媒體工作室,故多於影片技術略知一二),發現原始影片是高清晰度的高畫質影片,可以說完全沒有最佳化過,適合在高速的Lan區域網路播放,但卻不利於頻寬受限的Internet向廣大的使用者播放,是故必須要將影片進一步最佳化。

首先在微軟Expression Encoder中先滙入一段wmv影片,而原始影片每移傳輸速率資料量過大,故我試著重新將影片編碼,並採用不同的壓縮比例,來降低每移資料量傳輸過大,而造成影音延遲的問題,結果在MSHOW人數沒有超出負荷的情況下(指頻寬沒有被大量的上線人口吃光),串流影音播放時,就不會有Delay或停頓的現象了。

  • 原始wmv影片之傳輸速率(3049Kbps)


  • 最佳化後之傳輸速率(859Kbps)


而有最佳化和沒最佳化的影片,在"速度"上就高達3.55倍的傳輸速度,當然這也是影響影片播放平順的一個重要關鍵,無論你在Silverlight或Flash播放影片皆然。

而Expression Encoder的設定方式如下:
1.首先打開Expression Encoder,並匯入wmv影片。
2.將Video編碼選項設定為Stream Board(MP)或Stream Board(AP)
3.調整Width及Height,因為Encoder預設自動縮小影片尺寸,你記得要調回原來影片的尺寸。

  • Encode畫面一

(點圖放大)

  • Encoder設定值


最後和大家分享MShow網站之SIlverlight + ASP.NET + ASP.NET AJAX整合與開發經驗,而負責MShow網站的部門也有談到希望祭司寫一篇稿,來分享一下開發過程的種種,若過一陣子有明確邀稿的話,祭司再詳細講解這中間過程的點滴。。。

註:
祭司開發過程是採用VS 2005 + SQL Server 2005 +Silverlight 1.0 + 手JavaScript  + 手工XAML,至於用手工JavaScript及XAML Code的原因是設計很多細節時反而比較方便。


Silverlight 快速易學易用之中文字型解決方案←上一篇 │首頁│ 下一篇→Silverlight 2.0 Beta1即將現身
本文引用網址: