星期二, 10月 23, 2007

三種Flash影片播放方式

無意間在網站上看到一篇關於Flash影片的文章,而我之前也曾經數次製作過關於這類的案件,覺得可以把這個文章分享給大家,讓大家可以更了解在網頁上使用Flash影片供人下載的方式。目前而言,下載的方式有下列三種:
  • 內嵌影片 Embedded video (需要 SWF)
  • 漸進式下載影片 Progressive download (需要 SWF 與 FLV)
  • 串流影片Streaming video (需要 SWF 與 FLV)
底下大致說明這三種播放影片的差別。


內嵌影片(Embedded video)

內嵌影片對一般Flash設計師而言,是最容易也最簡單使用的方法,因為直接使用時間軸(Timeline)來對影片做互動的功能,但它的限制也不少:
  • 影片品質較差: Flash用來處理內嵌影片的編碼並不是最好的,所以影片的品質也會受到影響。
  • 下載包含影片的 SWF檔案需要更長的時間這個方法會大大的增加SWF檔案的容量,所以會需要相當的時間來下載「整個」SWF檔案,因為它包含了所需要播放的影片。
  • 影片內容較難更新 要修改被播放的影片檔案是件無趣的事,因為每改一次,就得重新輸入影片一次,甚至調整時間軸特效之類的,然後重新發佈成新的SWF檔案。
  • 會有聲音同步的問題: Flash影片的播放速度必須與Flash的影格數(The frames-per-second rate)一致,否則聲音會無法同步。
  • 不支援長時間影片播放: Flash只能支援有限的影格數;換句話說,你的影片就有時間長度的限制了。
內嵌影片的方法比較適合用於影片播放時間短以及必須要放在Flash裡面的時候。


漸進式下載影片(Progressive download)

這種方式是用Actionscript語法來控制外部影片;播放的時候,真正的影片(FLV)內容與SWF檔案分開,影片各快播放功能如快轉、跳轉,則由這個Flash所產生的SWF檔案來控制。使用的語法如下:


這種方式在播放影片之前,就已經先把影片檔案(FLV)下載到使用者的電腦裡面,但在影片檔案完全下載完成之前,影片就會先播放了。

  • 容易更新: 要變更或增加影片檔案(FLV)的內容都是很方便的,因為影片檔案獨立於SWF檔案之外,不必因為影片而再次重新發佈SWF檔案。

  • SWF檔的容量較小: SWF檔案會比較小,因為只有在使用者要求觀看影片的時候才需要下載影片檔案(FLV)。

  • 效能更好: 因為影片檔案(FLV)與SWF檔案是分開的,所以執行的效果通常都會比較流暢。因為播放速度與影格速率(FPS rate)不一致所產生的不同步問題將不再出現。

這些優點都是漸進式下載影片(Progressive Download)與串流影片(Streaming Video)所共有的,兩者最大的差別恐就只有串流影片需要額外的伺服器軟體吧?漸進式下載影片還是有一些隱憂存在的:
  • 搜尋與導覽能力有限: 在影片(FLV)完整下載完成之前,使用者不能隨意快轉影片。使用者必須等到整個影片下載完畢才能夠使用全部的控制功能。正因為這個理由,串流影片(Streming Video)是個更好的選擇,串流影片並沒有這個問題。
  • 使用者可以取得影片內容: 因為影片檔案(FLV)是被完整下載的,實際的影片檔案存在使用者的電腦裡面。有經驗的使用者可以從瀏覽器的快取(Cache)或網路暫存檔案(Temporary Internet Files)中找到影片檔案(FLV)。當然這不見得是件壞事,如果你不在意影片使用權的話。事實上,在這種情況下有時候反而更方便使用,因為在使用者清除快取與暫存檔之前,可以自己決定要看哪一個影片片段(Video Clip),不需要再花時間重新下載同樣的影片檔案(FLV)。然而,假如因為使用所有權的關係,或者你不想被別人隨意存取下載這些影片檔案的時候,串流影片是一個更好的選擇。
漸進式下載影片適用於播放個人興趣、嗜好影片的網站,或提供短片而流量需求較低的網站。如果你想要提供數百位使用者下載影片檔案、追蹤使用者觀看的情形、統計影片觀看的資料、提供適合的影片播放頻寬…,你應該考慮使用串流影片(Streaming Video)的方式。


串流影片(Streaming video)

一如漸進式下載影片(Progressive Download),當你使用串流影片的方式時,影片檔案(FLV)是和SWF檔案分開的。影片控制的方式幾乎和漸進式下載影片的方式一模一樣。底下是Flash利用串流影片方式控制影片檔案的Actionscript語法:


透過串流影片的方式,使用者會在串流伺服器(Streaming Server)開啟一個持續的網路連結,並持續提供使用者下載所需的影片資料,這些即時的資料端看使用者如何使用,之後就馬上無法使用了。這個伺服器與使用者之間的緊密連結,讓伺服器可以很精確的掌握與控制傳遞任何一部份的串流資料,同時也有下列的優勢:
  • 決定使用者的頻寬大小,提供適當的串流影片頻寬。
  • 測量與追蹤串流資料的品質,如果需要的話,例如網路流量突然增加,可轉換到其它適當頻寬(更快或更慢)的串流伺服器。
  • 不需要另外製作分開的圖片或影片片段,就可以自動產生串流影片的縮圖與播放片段預覽。
  • 可自動產生「章節」(透過適當的縮圖),使用者可以隨意跳轉到影片的任何一處
  • 可從任何攝影機角度轉換到其它的串流影片而不錯失任何畫面。
  • 可截取任何影片的片段來編輯組成一個完整影片。
  • 即時網路影片播放功能。

如果漸進式下載影片(Progressive Download)方式控制影片的功能不夠強大,也許串流影片(Streaming Video)是另一個聰明的方法。透過串流伺服器Flash Communication Server來控制串流影片還有底下幾個好處:

  • 快速播放: 串流影片檔案(FLV)是網路上播放最迅速的方式。
  • 影片控制能力更強大: 包括頻寬偵測、監控服務品質、自動產生縮圖、伺服器端的播放列表等功能,只有串流影片的方式能做到。
  • 更有效率的使用網路資源: 伺服器的管理或頻寬費用會因其它使用者所下載的資料數量而有所影響;透過串流影片,使用者要看多少就下載多少,沒有看的就不會下載。
  • 安全的播放影片媒體: 因為串流影片並沒有存到使用者的電腦裡面,所以使用者無法取得串流影片的資料。此外,Flash Communication Server支援SSL加密機制,提供更安全的串流資料。
  • 佔用最少的資源: 串流資料明顯而有效的降低記憶體與磁碟空間,因為不需要將整個影片下載到電腦裡面。
  • 有追蹤、統計、記錄的能力: 因為漸進式下載影片的方式只是「下載檔案」(hit on a file),你無法追溯任何使用的過程。例如影片看了多久?使用者有沒有快轉、倒轉或暫停影片?使用者播放了影片幾次?使用者是否在影片播放完畢前就已經離開網頁?串流影片的方式讓你可以記錄這些重要的資料。
  • 完整的搜尋與導覽: 使用者可以立刻跳轉到影片中任何的時間點,並且即刻播放影片。所以你不必得每次都要從頭開始看起。
  • 深入的互動機制: 精確的串流控制可以產生更多的影片互動功能。例如轉換不同的攝影機視角,從影片中衍生其它影片,以及流暢的影片轉換與結束。
  • 即時影片: 串流影片提供了即時的影音播放的能力,不論是從網路攝影機或從數位影像攝影機。
  • 影片截取與記錄: 除了即時串流影片功能之外,Flash Communication Server也讓你可以記錄影片,包括事件影片儲存(Archiving an event),或影片通訊(video messaging)。
  • 更多的使用者: Flash Communication Server具有即時的一對多串流資料的能力,可以讓為數眾多的使用者同時使用影片的各種應用功能。

雖然串流影片的方式比起漸進式下載影片的方式來得複雜,但方法都極為相似:使用同樣的元件與Actionscrip指令。兩者最不同的地方在於串流影片有更大的控制能力。串流影片唯一的隱憂是它需要特殊的伺服器軟體:Flash Communication Server,只有它能透過免費的Flash播放器(Flash Player)來傳遞串流影片與即時資料。底下是你想要或需要使用串流影片的情況:

  • 播放影片時間較長的檔案—例如當你的影片片段超過十分鐘的時候。
  • 播放影片給多位使用者同時觀看—例如一百個或更多的使用者。
  • 想要有更多的影片控制功能,如頻寬偵測或監控網路服務品質以提供最好的影片品質。
  • 提供更好的影片互動機制。
  • 即時串流影片
  • 截取影片

簡言之,如果你的網站有很多影片的東西,而你想讓這些影片提供最好的品質,就應該透過Flash Communication Server來享受串流影片所帶來的好處。

最後,看完了整個文章,你是不是有這文章是在替Flash Communication Server打廣告的感覺?基本上…這篇文章的主體是從Adobe網站上看來的,所以答案應該滿明顯的…。然而,如果你想要用串流影片技術所帶來的好處,勢必得用Flash Communication Server不可!(意思就是…得花錢買一套才行用啦!又要花錢買唷…Orz)我個人目前僅使用前面兩個項目的技術而已,因為我沒裝Flash Communication Server這套軟體。