ipad2 : 瀏覽器 Safari 不支援 Flash, 那個軟體可取代呢 ?

willychn33 wrote:
skyfire的原理...(恕刪)


Skyfire 2.0 以後是這樣沒錯,不過還是在遠端做轉換之後再傳到客戶端。
Skyfire 1.0 的時候是完全用遠端解析,效果慘不忍睹。

天夜蒼真 wrote:
不是SAFARI不支...(恕刪)


FLASH 並不是「系統層級」的「服務」。說到底,他只不過是一種互動式動畫格式罷了。

你寫一個瀏覽器程式,開 TCP/IP Port 80,用 HTTP/1.1 通訊協定把 FLASH 資料抓下來,然後依照格式解析播放,就只是這樣而已,和 OS 一點關係都沒有。OS 會影響「硬體加速」的播放效率,但那只是「堪不堪用」的問題,不是「能不能用」的問題。

用最直接的例子來說明:iOS 同樣也沒有支援 RMVB,但是 AVPlayer 之類的 App 照樣可以播放。

ulyssesric wrote:

FLASH 並不是「系統層級」的「服務」。說到底,他只不過是一種互動式動畫格式罷了。

你寫一個瀏覽器程式,開 TCP/IP Port 80,用 HTTP/1.1 通訊協定把 FLASH 資料抓下來,然後依照格式解析播放,就只是這樣而已,和 OS 一點關係都沒有。OS 會影響「硬體加速」的播放效率,但那只是「堪不堪用」的問題,不是「能不能用」的問題。

用最直接的例子來說明:iOS 同樣也沒有支援 RMVB,但是 AVPlayer 之類的 App 照樣可以播放。




受教了!!

也可以這麼說 沒有任何一家的OS原生就可以播放flash 都需外掛阿多比的flash程式

OS和硬體來決定是否讓外掛跑的順不順...

iOS不給安裝外掛 所以也就不能跑flash囉...
天夜蒼真 wrote:
iOS不給安裝外掛 所以也就不能跑flash囉...


所謂的「外掛」其實只是一種「執行時期動態連結」的程式執行方式。

我們在寫程式的時候會呼叫很多的函式庫,例如像數學運算、資料庫連結等等。這些函式庫你可以在程式編譯階段就直接引入,變成你發行的程式碼內含的一部分;或是以獨立檔案方式存在,在程式執行時才臨時引入。像 Windows 那一狗票 .DLL 就是屬於這種執行時期引入的函式庫。

以 Flash 的狀況來說,他同樣也是一個執行時期動態引入的函式庫。只是瀏覽器這麼多種,開發瀏覽器的人和開發外掛的人總要有一個統一的程式呼叫界面。這個界面的格式規範就叫做 NPAPI,就是「Netscape」這家公司制定的。撰寫外掛的人依循 NPAPI 格式規範實作程式被呼叫端,瀏覽器則用 NPAPI 格式規範來呼叫啟動外掛。

所以說,「Flash 外掛」就是一個「以 NPAPI 界面標準實作、可以播放 FLASH 互動影片的播放器」。這只是一種業界約定成俗的標準,並不是什麼太空科技。

一個「執行時期動態連結」的資料庫「檔案」是由應用程式主動去尋找、連結,而不光是由系統自動幫你配對。所以一個外掛要放在硬碟上的哪個位置,是由程式設計師自己決定的。程式設計師可以利用系統服務(例如惡名昭彰的 Windows Registry)來取用系統層級的共用外掛,也可以把這些外掛和自己的程式執行檔放在一起,變成自己程式專用的專屬外掛。而後者的作法就完全不必動到系統服務。對岸所謂的「綠色軟件」就是屬於這種作法:所有會用到的 DLL 都打成一包和執行檔放在一起,程式啟動時就用預設的「相同路徑」去尋找 DLL,使用者不需要「安裝」這個步驟就能夠直接使用。

以 Flash 來說,在 Mac OS X 上的 Flash 共用、專屬「兩種都有」。OS X Safari 與 Firefox 使用的 Flash 外掛是屬於系統層級,安裝在 /Library 路徑下(技術上來說 Safari 的作法有點差異:並不是由 Safari「主程式」去做動態連結播放)。而 Google Chrome 則是和應用程式本身一起打包。所以你把 OS X /Library 下的 Flash 外掛檔案通通砍光,Safari 和 Firefox 都看不到 Flash,但是 Google Chrome 完全不受影響。

iOS 的狀況也是一樣。iOS 系統層級沒有內建 Flash 的動態連結資料庫,但是沒有人限制你不能在自己的 App 裡面打包一個 Flash player 啊!在 2010 年以前 App Store 規範的確是有所謂的「Adobe 條款」,但這條早在一年多以前就廢止了。

換句話說,iOS 上不能跑 Flash,純粹只有一個原因:沒有人開發這樣的 App,或者該說,沒有人能開發一個堪用的 Flash player for Tablet。包括 Adobe 在內。

ulyssesric wrote:
換句話說,iOS 上不能跑 Flash,純粹只有一個原因:沒有人開發這樣的 App,或者該說,沒有人能開發出一個堪用的 Flash player for Tablet。包括 Adobe 在內。


順便解釋一下,Flash的設計,它的架構壓根兒就沒有考慮過可能會在mobile device上執行...
要讓Flash在mobile device上實現:

第一你要犠牲掉相容性! 有用Android平板/手機看Flash網頁的應該都有遇過某些網站的
Flash跑起來跟PC看不一樣的情況.

第二是一定要犠牲掉效能跟電力. 先不管平板電腦好了,硬體整個比現有平板電腦好上一截
的小筆電, 跑Flash的"笑能"有多慘,有多耗電, 有用過的心裏都有數.

第三是Flash幾乎就是有安全性漏洞的保證.要知道Adobe這家公司不是做OS的, 也不是
做什麼有重要安全性考量的軟體的公司, 他們是個搞多媒體軟體的公司! Flash因為太久了,
包袱自然也大, 新的code可能沒什麼問題, 但是為了確保用舊版Flash的網頁也能執行
而還在的舊程式碼, 安全性可能都有很大的問題, 而且可能已經無法維護(有待過軟體公司
寫過軟體就知道很多舊的程式碼已經無法再維護). 大家有看到很多駭客比賽多少分鐘把
OS X給入侵的, 很多用的都是瀏覽器的外掛的漏洞! 尤其是Flash這種要求很高系統權限
的東西. 當然現在沙盒(sandbox)的觀念可以阻止一些不當外掛程式來入侵, 不過不代表
Flash本身的安全性是很好的...

Adobe不是不知道以上的問題, 他們也搞過一個專門為mobile device設計的Flash,
叫Flash Lite! 也把這個Flash Lite推給Apple過. 不過最大的問題是在於,
Flash Lite並不完全相容PC的Flash, 網站可能要專門為Flash lite設計一個專用
的Flash... 就被Apple以「我們需要一個完整功能的Flash」給回絕掉了.

ulyssesric wrote:
iOS 的狀況也是一樣。iOS 系統層級沒有內建 Flash 的動態連結資料庫,但是沒有人限制你不能在自己的 App 裡面打包一個 Flash player 啊!在 2010 年以前 App Store 規範的確是有所謂的「Adobe 條款」,但這條早在一年多以前就廢止了


所以「Adobe 條款」很早就廢止了哦?! 這我倒是第一次聽到....
與失敗為伍者,天天靠盃都是別人的錯。 與成功為伍者,天天跟失敗切磋直到不再出錯。
bluesystem wrote:
所以「Adobe 條款」很早就廢止了哦?! 這我倒是第一次聽到....


所謂「Adobe 條款」就是 App Store 開發者協議中「所有 App Store 上架軟體都必須經由 Xcode 編譯而成」這一條。當時 Apple 祭這條,倒不是為了堵網頁內嵌 Flash,而是為了堵 Adobe AIR。

這條其實並沒有出現很久,記得最早是在 2009 年底到 2010 年初的時候出現的。大概在去年年中,Apple 就把這條改掉了。有一說因為歐盟那邊啟動了反托拉斯調查。我記得當時 01 上也有很多鄉民到處轉載然後宣稱什麼「Apple 終於對 Flash 投降」云云;實際上根本不是這麼一回事。

個人解讀是,與其說 Apple 怕反托拉斯,不如說他們總算搞懂 Adobe AIR 根本不成氣候。

ulyssesric wrote:
所謂的「外掛」其實只...(恕刪)


每次看到您的文章都可以學習到很多專業的知識

感謝您細心詳細的講解!!
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!