flashcom > 裏所有文章列表

Flash Media Server 2 Shipping

In flash, flashcom   November 15, 2005 - 3:34 pm

呼,昨晚上課時還在說 FMS 18號就要到期了,結果mm在今天的 Max Korea 中就宣佈 FMS 正式出貨,下面是在網站上看到的購買訊息。

*A single license of this product limits use to 100 simultaneous users and 3 virtual hosts. The number of simultaneous users can be increased by purchasing additional Professional Editions and stacking the serial number. Note, virtual hosts can not be increased in this manner.

所以答案揭曉,入門價是 professional 版 100人不限頻寬 $4500 (約台幣十四萬),可以疊三張license也就是最高 300人同時連線。

*Upon purchase of the product you will have access to both Windows and Linux platforms; only one platform may be installed and deployed at a time.

光碟裏同時有 windows + linux版 (不過當然同一時間只能裝一種版本)

*This product is licensed to be run on a Single or Dual CPU server.

呃,只能裝在 1 or 2 cpu的機器上,那如果每台是三顆cpu該怎麼辦?

*This product can not be used by Internet Service Providers (ISPs) or Content Delivery Networks (CDNs) for hosting services.

這個就有意思了,mm不準 ISP或CDN使用這個版本來提供hosting服務,而是要求這種大量用戶買下面這個solution:

*Flash Media Server 2 Origin and Edge Servers

Customers who have very large websites that require media delivery to over 1,000 simultaneous users (or 200,000 viewers per month) should consider deploying with Flash Media Server 2 Origin & Edge Servers rather than stacking Professional Editions.

Origin and Edge Servers help achieve scalable deployments by facilitating load balancing, failover, redundancy and clustering. Origin Server deployments start at $45,000.

呵呵呵,這下子精彩了,超大量用戶要從 Origin/Edge server這個版本入手,而入場價是將近一百四十八萬新台幣啊~~~

根據這些日子來為了備課寫範例而廣泛使用FMS2的心得,它的表現真是比FCS 1.5好許多,光是video 的quality就值回所有票價,更別提新出現的那一狗票 API 跟 clustering edge server support。

但誰會是我們第一個做的FMS客戶呢?呵

comments(2) | by admin

FMS2 初體驗(3) – 完結篇

In flash, flashcom   October 6, 2005 - 11:55 am

核心功能都玩完後,順邊把FMS2安裝目錄逛一遍,看有沒有偷藏什麼好東東,結果有以下發現:

-lic檔:
就跟 flash remoting, flex, jrun等產品一般,FMS2是靠一紙 xxxx.lic 來記錄授權資訊,而且最妙的地方在於這個lic是純文字檔,打開就可以看到裏面的內容,包含「到期日」之類的資訊;我試者將它移到其它目錄再重開 FMS2 果然就變回 dev版(1MB/5 connections),所以由此幾乎可以判斷將來 FMS2的賣法應該也是分等級,其中 dev是免費開發版,而「不限頻寬/5000連線數」的則是最貴版(十五萬台幣左右),另外應該還可以再堆疊license上去;比較好奇的是在這中間是否還會有中階產品出現?例如五萬元(約略coldfusion的價位)給個 10Mb/1000連線數之類的。

如果這個價位的產品能出現的話,對mm與業主來說都是利多,畢竟台灣想做 Flashcom 應用的業主都以中小企業為主,其中十個有八個是想做影音聊天電話交友之類的服務(我們平均每個月會接到兩三個詢問個案),而這些業主再強也不可能弄到超過10Mb的線路,所以五萬元會是一個非常殺的搶手貨啊~

-神祕的 G711.dll 與 Screenshare.dll:
這兩個dll都大有來頭,其中 G711主要是用於 VoIP(ip telephony),它是採用 8 bit PCM壓縮原理的codec,詳情請看wiki解釋。這個DLL原本是用於 Breeze 的 telephony support, 例如上次MM財報大會時,無法透過browser聽到聲音的用戶就可以直接打電話進去聽演講或發問,這就是 breeze telephony gateway 加上 G711的功用。

而Screenshar.dll則更是讓人眼睛一亮,心想是不是mm終於良心發現願意放棄商業獨佔奔向開放源碼的光明境界因此決定提供眾人期待以久的Screen Sharing功能一解多年的憾恨但在看完這麼長一句沒有逗號分隔可喘氣的句子後我仍然只能很遺憾的告訴你這一切都是落花有意流水無情想太多啦~

要瞭解這個問題必需對 Flash Player與 Screen sharing這兩件事有根本的認識,首先,要能做到 screen sharing就必需要有程式負責把畫面抓下來,這部份很簡單,用類似下面的程式碼即可(用 C 寫成):

Actionscript:
  1. pixelData.width = gdk_pixbuf_get_width (pixbuf);
  2. pixelData.height = gdk_pixbuf_get_height (pixbuf);
  3. pixelData.data = gdk_pixbuf_get_pixels (pixbuf);
  4. pixelData.rowOrder = TOPDOWN;
  5. pixelData.n_channels = n_channels;
  6. pixelData.rowPadding = rowstride - pixelData.width * n_channels;
  7. FlvStream_writeVideoTag(flv, timeStamp, 0, &pixelData);
  8. //(source: libflv project - Copyright 2005 Klaus Rechert)

但重點是程式(也就是player)本身必需有能力去做這件事,例如內含必需的library,可是這樣做的話無可避免會增加 player本身的size,而保持flash player 苗條的身段一直是mm最高優先,因此當然不會內建在flash player裏面;這也是為何 breeze 會需要額外下載 breezeAddIn.exe,這支 exe就包含了上述 screen capture所需的一切功能。

其次,raw data抓下來後,由於資料量非常大,因此勢必要先壓過才能傳出去,以上面的例子,它是直接壓成 flv 然後寫入 filesystem,而 breezeAddIn 想當然爾就是透過內建的codec 壓縮成 flv傳回 breeze內建的flashcom server,因而做到了 screen sharing。

從這兩段描述就可以瞭解,一支能 capture + compress + streaming 的程式是不可或缺的,而目前Flash Player 8只具備了後兩項,自然是無法抓畫面啊~

那FMS2裏面這個 Screenshar.dll 到底是做什麼用的呢?個人推測是用來接收 client端傳回的 screen capture data,因為FP7裏除了有 Sorenson spark codec外,還有一個比較少人知道的 Screen Video Codec,猜測合理的作業流程是screen video codec負責壓縮screen sharing的raw data然後傳回 breeze/flashcom(請注意 breeze裏面的flashcom是特別版,不是一般的flashcom),此時 Screenshare.dll就負責接收這段 stream,後續有可能在server端即時 transcoding成 sorenson spark flv再廣播出去以節省頻寬。

所以 FMS2 裏面放個 Screenshar.dll 恐怕只是為了給 breeze 5測試用,將來正式版很有可能就會拿掉。

□ screensharing using breezeaddin

既然講到 breezeaddin,不如就順便聊聊這件事吧。

去年初玩家們籍由分析 flex 的 base class 發現在 flash player 裏有內建某種程式下載機制,當時大家用下列語法就可以順便安裝 central plugin (主要提供file upload) 與 breezeAddIn(用途顧名思意不用再解釋吧?)

Actionscript:
  1. var m = new System.Product("central");
  2. m.download();

一旦下載完成後,就可以用下列語法來抓畫面:

Actionscript:
  1. var tmp = "screen";
  2. var c = Camera.get(tmp);

然後將寫好的 swf 拖放到 breezeAddIn上就可順利執行並做到補捉畫面,這支程式甚至還可以讓你選擇要抓那個開啟中的應用程式來廣播。

這一切聽起來都很順利,你知道了如何下載、安裝俱備 screen capture能力的breezeAddIn,也知道用什麼語法去觸發補捉畫面,沒有理由不善用這功能來寫許多偉大的曠世巨作不是嗎?

問題只有一個,flashcom不吃這套。

經過去年初一長串的測試後終於証實,flashcom裏面有某種判別機制,能分辨封包中的訊號是來 breezeAddIn然後就直接drop掉。一般測試最常見的情況就是 breezeAddIn可以成功連進 flashcom, 但通常最慢 5秒內就會被斷線,所有的video stream也不會寫入硬碟。

這讓我不禁想起去年 max 2004時跟 gary grossman聊到這件事,那時他一臉賊賊的招牌微笑,原來是早有暗留一招難怪老神在在毫不擔心,果然是真人不露相啊~

所以如果你是個 flashcom wanna-be或也想試試 screen sharing,簡單的答案是:人生苦短,找點別的事做可能更有意義。

□如果一定要 screen sharing怎麼辦呢?

好吧,在已經提醒過你人生唯苦無樂只有苦極滅道回道是岸才為上策後,如果你還是一心想要 screen sharing該怎麼辦呢?

可能的方案有幾個。

1、用 virtual driver: 這裏面最知名的就是 camtasia studio。camtasia是一套screen capture軟體,可以將畫面操作錄影下來,經過剪輯後再輸出成avi, mpg, swf等各種格式,頗受國內e-learning界與講師群喜愛,而它確實也是個中翹楚當之無愧。

camtasia另一個特異功能就是可以把自已模擬成一台web cam,一旦啟動它的 live 功能後,在flash player 裏的 camera listing就會看到一台名稱為 camtasia的webcam,這就是camtais偽裝而成的 virtual driver,此時就可以一邊錄畫面一邊將訊號餵進 flash player然後透過它傳進 flashcom。

根據兩三年前的測試結果,這招是百分之百成功的,那時我們也跟國內某大英語補習班合作開發了一些應用程式,但這條路也有個缺點,就是每套camtasia要價約三百美元(約一萬元台幣),而理論上來說,在合法使用的情況下,每個廣播發送電腦 (publisher) 都要安裝一套自已的license,因此如果同一時間有二十個老師要教課,或四十人要開會,就得買同等數量的license,這裏面所需的成本就不見得是可行的了。

過去幾年我也不斷找尋 C/C++高手幫忙開發類似的東西,因為理論上screen capture很容易,只要有人能將抓下來的 raw data轉成 virtual driver 送給 flash player即可,但根據好友兼長輩 b6s 兄的解釋,要寫出這樣一個 driver 不如直接找個密室修成肉身佛還快一點(呃 好吧 這不是 exactly wording, 但基本上很麻煩就對了,要自已從很底層的地方做起,並沒有高階的API可用)

2、用 vnc2swf: vnc是一個遠端遙控桌面的軟體,原理跟 screen capture沒啥兩樣,而 vnc2swf故名思意就是將 vnc的畫面轉成 swf(範例請看這裏),因此可能的下手處是改寫 vnc2swf的輸出端模組,讓它可以直接傳 flv到 flashcom上面,或是將此訊號轉成前面提過的 virtual driver (but again, this is a rawdata to virtual drviver issue, which is HARD)

但要特別注意的一點則是,vnc傳送一個 1024x768大小的畫面大約會吃掉 300kbps的頻寬,這還只是一個stream單向的傳輸,如果同時有二十個學生在上課,那就是 300*20 = 6000(將近6MBbps的頻寬),這些頻寬都是成本啊~

3、用白爛法: 有次一位合作的工程師突然說「那幹麼不直接拿web cam照螢幕就好?」頓時大家聽了真是額手稱慶鼓掌叫好,然後就是一頓亂打順便就地埋了,現在墳上的草應該也就一公尺了吧...

□真的需要 screen sharing嗎?

在看完上面一堆跟FMS2好像沒直接關連的閒聊後,你可以認真想想,真的有需要screen sharing 嗎?

這些年來我也曾抱者幾近極端份子的熱情嚐試各種可行的solution,但最後我終於發現一件殘酷的事實,那就是screen sharing其實是件很不實際的事。

並不是指技術上不可行(因為它已經被証明可行),而是指它所消耗的頻寬,與所能提供的品質實在不成正比。

上面是某次 Peldi's Coding Cafe抓下的畫面,圖中是他示範程式碼的部份,當時我瞪大眼睛把螢幕放到最大,也還是看不清楚他到底在打什麼,這件事突顯了一個事實:

即使技術上能將螢幕廣播出去,也很難達到清淅可接受的程度

而像 vnc 高品質的畫面則需用大量頻寬(也就是錢)堆出來,這使得screen sharing這件事變的幾乎無解。

另一方面,如果從「應用面」來看,不論是線上教學會視訊會議,其實最重要的元素都是影像、聲音與教材/簡報,其中影像與聲音用web cam就可以,而教材簡報則可以用眾多的 ppt to swf 轉換程式預先轉好,甚至是將ppt上傳到server供所有學員下載也是可行,因此,真的很難找到什麼應用模式是非用screen sharing不可的。

所以到這裏,你應該真的死心了吧?

□結語

經過幾天測試,基本上對 FMS2 已經有全盤的掌握,雖然特出的新功能不多(file/net access等眾API算是基本常識本來就要會的),但支援 edge server做clustering與 ON2 VP6 codec則是讓人心喜的部份,另外最重要的就是合理的定價讓人第一次開始覺得這是可以認真推的解決方案,也比較敢把 FMS2 包進專案規畫書裏呈現給客戶了 :-)

comments(5) | by admin

FMS2 初體驗(2)

In flash, flashcom   October 5, 2005 - 6:00 pm

這兩天把 FMS 徹底玩透透,看看有些什麼新東東,接下來是 Part 2。

首先我先將過去做的案子直接移到FMS2下面執行,基本上都很順利,只有一兩支程式遇到configuration上的麻煩,需要手動改權限。

測試時觀察的重點有兩個:

1、執行效能:

據說這次 FMS2 是完全用 C++改寫,因此在windows上效能應該會有長足進步,但可能是我測試的 con-current連線太少,所以無法探測到它真正的效能邊界,以我測試的部份來看是完全沒有大躍進的感覺。(或許當 yahoo 成為我的客戶那天時就有機會玩幾千人同時連線的測試了 orz)

2、畫面品質:

基本上 FMS2 最大的賣點之一就是多了 ON2 VP6 的支援,但比較有趣的是「支援」的定義有兩種,一種是server本身能做 server-side transcoding將外來訊號轉換成 VP6 格式,另一種則是能吃下client端傳來的 VP6 video stream,而很明顯的 FMS2 的支援是屬於後者,也就是說它無法(或至少我沒玩到)在server端提供必要的 transcoding,因此想要高品質的VP6 streaming video ? 請愛用 ON2 Flix 8 (這玩意上個版本不是才 v1.0,怎麼過兩個月就直升8.0啦~) 或最新才更新的 Sorenson Squeeze v4.2

這兩點之外,由於其它核心API的操作都完全一樣,因此剩下能做的測試就是把所有新的API都跑一遍,基本上前一篇中打 * 號的那幾個,例如 XML, LoadVars, WebService等都跟Flash 裏的一模一樣,因此使用上你只要騙自已是在操作一個看不見的 flash player就好(把 FMS2 想成是 flash player),另外 File 這組API也跟 FP8裏面的 FileAPI非常類似,不過個人覺得更貼近 PHP 的 file操作,但總之就是很容易使用,正常程度的工程師應該半小時內就可以上手。

正事玩完後接者就將注意力轉到其它五四三的地方,第一個看上的就是全新的 admin 工具。

Flashcom舊的admin工具分成兩個,一個是 server admin另一個是 app admin,基本上功能陽春但仍堪用,如果真的不夠還可以跟macromedia申請 source code 回來自已改;但這次 FMS2 的 admin可真是讓人驚豔,幾個重點整理如下:

-畫面變漂亮了: 這個不用多說,請自已看照片(點小圖可看大圖)。整體操作流程與 UI配置也明顯經過設計,四處可見的淡黃色 pop-up tips更是讓人覺得貼心(怎麼越說越像某01站的吉米兄賣東西的台詞啊?)

-大量採用 central 元件: 第一眼看到 admin 畫面時,心中就是想到這件事,基本上整體的介面就是以 central元件為核心來製作,有部份 UI controls 是連flex裏都還沒有的。

以目前macormedia產品線眾多的元件版本來說,Breeze 5.0的元件外觀與功能都是最新(因為是在Flex之後才上市,自然繼承Flex + Central 的長處)、Flex 的元件最強大完整,有讓人口水真流的HDivideBox(也就是以前的 Splitter)、Central的元件也挺漂亮並且效能頗佳、而Flash 2004/8裏的元件則只能以,咳,樸實無華但堪用來形容(也可以說是大過不犯但小錯不斷 :D )。

因此從這個發展的階段來看,FMS admin既然不是flex 寫成,因此自然不能用Flex元件,而Breeze 5的元件推測應該正用力改寫中將來好放進正式版的FMS,因此這個時間點要寫新的 Admin的介面當然只能挑次一級最佳的選擇,也就是 central囉。

只是希望在不久的將來,flex team能真的將這些不同版本的元件大一統,做出一組 UI base library,就可以同時供 Flash/Flex/Breze/FMS使用了,其實話說回來,這沒有那麼難啊,人家 ASWing一個人都硬幹出一套 SWING AS2 port,EeFlash更是以一人之力就寫出近乎Flex的 xml-ui parser,更別提ActionStep也不過才三個人但已經快把整個NextStep的NS系元件都port完畢了,最重要的是這三組team都是從 0 開始做,而mm早就有 UIObject/UIComponents的base class架構~所以,mm要加油啊,有需要幫忙說一聲就好...咳...

-可同時管理多個server: FMS2另一個比較令人重視的新功能就是 edge server,也就是能簡單無痛的 clustering 到 server farm以提供數百到數千人的同時連線的能力,而當edge server數量一多時,管理自然就很重要,這時 admin的 Manager Servers面板就派上用場了。

從圖中可以看出這個面板提供了三組圖表,分別是 active connections, bandwidth與 cpu/memory usage,這正是以往 Flashcom管理者最需要的資訊,同時FMS2也有一個詳細的log機制,所有面板上看不到或看不清楚的數據從log裏都可以分析出來。

Using Edge and Origin Servers (online doc)

Add comment | by admin

FMS2 初體驗(1)

In flash, flashcom   September 30, 2005 - 1:56 pm

中午吃飽飯沒事把FMS2 (damn, 每次都唸成 FM2 -_-)裝起來玩了一下。

裝好後第一件事就是看看多了那些 API,下面是所有API列表(打 * 號的是新版才有的):

Application
Client
*File
*LoadVars
*Log
NetConnection
NetStream
SharedObject
*SOAPCall
*SOAPFault
*WebService
*XML
*XMLSocket
*XMLStream

其中比較讓人注意的有:

-NetStream多了一個 setVirtualPath,配合 Client.virtualkeys 可以依客戶端的player版本自動切換使用 sorenson spark 或 on2 VP6 video, 意思是說,如果偵測到客人裝的是 FP8,就可以自動切換到高品質的video播放。(這也是整份手冊裏跟 VP6最相關的部份,其它的把戲都在client端)

virtualkeys長這樣:

XML:
  1. <virtualkeys>
  2. <key from="WIN 7,0,19,0" to="WIN 9,0,0,0">A</key>
  3. <key from="WIN 6,0,0,0" to="WIN 7,0,18,0">B</key>
  4. <key from="MAC 6,0,0,0" to="MAC 7,0,55,0">B</key>
  5. </virtualkeys>

-File access: 幾年前寫flashcom app時,得用 server-side Sharedobject 來模擬一個local db, 不但效能差而且管理也很亂,現在有了正式的 file access就方便多了。為了安全起見,FMS2的file access仍然是在sandbox 裏進行,可以用下面的config 去設定app可存取的目錄:

XML:
  1. <jsengine>
  2. <fileobject>
  3. <virtualdirectory>/videos;C:\myvideos</virtualdirectory>
  4. <virtualdirectory>/fcsapps;C:\Program Files\fcs\applications
  5. </virtualdirectory></fileobject>
  6. </jsengine>

照上面的設定,當程式裏鍵入 /videos 時,實際上是寫入 C:\myvideos,其餘依此類推;另外這個File API的指令跟 C, PHP非常像,所有常見的 (open, append, write, lock...)都一應俱全,如果能順便支援 sqlite就好了啊 orz

-loadVars, XML: 這兩個也是 flash player端至少三年前的技術,不過現在可以用於server端了。這代表日後 FMS要與 app server連繫時,不會被限制在只能用 flash remoting (經由 NetConnection),而可以用比較常見的 http get/post。

-web service: 這個就比較有趣,原本我以為mm會順便把xpath做進來,不過從現有的API看來似乎是沒有,而且功能頗為陽春,這部份可能要自已補強。

-xml stream: 這玩意是 xml socket 的演化版,主要目地就是傳輸方式改用 xml stream,進而可以跟 jabber 這類的IM server溝通,除了封包的前面會加上

tag 做為標識外,其餘內容與用法都跟 xml socket一樣。不過可千萬別小看這個 jabber-support, 這裏面可能會很驚人的發展,呵呵呵,let's wait and see.

FMS2 online doc

note: 以beta 軟體來說,這次FMS2的表現實在是異常優秀,壓根沒beta的樣子啊~還是mm的政策其實就是想免費放送 FMS2啊啊啊啊啊啊~

Add comment | by admin

Flash Media Server 2 public beta !

In flash, flashcom   September 28, 2005 - 3:47 pm

Jesus Holy Christ ! waht a day !

今日真是好消息不斷,其中一個是 FMS 2開放public beta了。

下載位址

這個beta實在誠意十足,因為:

-它是完整版
(fully-functional without any limitation)

-不限頻寬,最高連線數5000人
(Unlimited bandwidth and up to 5,000 simultaneous connections)

唯一的限制就是會在11月18日過期,但這不是啥大問題,屆時正式版肯定也上市了。

Jeff Beck有張精典專輯叫 blow by blow,這就是今天到目前為止的感覺吶 :-)

Add comment | by admin

Next Posts Previous Posts

mobile phone