各視頻站做到自動切換flash和html5播放器的難度有多大?
實在是受不了mbp在各視頻站下那可怕的發熱了,試了很多插件,都不是很好,所以才會發問。
1、做到根據操作系統、瀏覽器或者用戶自定義來使用不同的播放器是否有難度?
2、如果有難度,問題點在哪裡?
3、如果不算難,為什麼不做?
判斷操作系統和瀏覽器種類和版本,這個不難。
目前的主流平台一共5個:
桌面平台:
- Windows(完美支持H5和 Flash Player)
- Mac OS X(完美支持 H5和 Flash Player)
- Linux(支持 H5,Flash Player支持到11.2,Chrome對 Flash Player 支持更好)
移動平台:
- Android(支持 H5,Adobe已經放棄Flash Player支持)
- iOS(支持 H5, 不支持 Flash Player)
從上面可以看到,有半數以上的平台(包括已經放棄支持的)支持 Flash Player。既然超過了半數,就有進行切換的需求與可能。
最完美的情況,就是檢測操作系統和瀏覽器版本,根據不同情況進行適配,例如:
- Windows XP 系統,IE6瀏覽器,使用 Flash Player 來播放視頻;
- Mac OS X 系統,使用 H5 來播放視頻;
- 移動平台,必須使用 H5 ;
- ……
雖然在前端開發上有一定的成本(例如 Flash Player 和 H5 的界面適配、Desktop 和 Mobile 的界面適配,以及各種瀏覽器和平台的組合之類的),但也不是不可承受。
讓我們來看看 Flash Player 與 H5 以及各個瀏覽器支持的視頻格式吧(下表來自HTML5 Video):
也就是說,在支持 video 標籤的 H5 瀏覽器中,並沒有一種視頻格式是所有瀏覽器通吃的。
如果覺得這個表不夠詳(zhuan)細(ye)的話,還可以看看下面這張圖(下表來自wikipedia HTML5 video):
如果拋棄掉可愛又可憐的 Opera ,以及不考慮 Firefox 在 OS X 和 Linux 上的問題,我們確實可以說,MP4格式已經是所有現代瀏覽器能夠直接支持的視頻格式(下表來自A/V Formats | The State of HTML5 Video Report):
而實際上,已經有公司在做這件事(而且做了好久),JWPlayer 是一個優秀的 Flash Player 視頻播放器,後來開始支持 H5,下面是它的一些介紹:
- HTML5 Video Player Flash Video Player
- HTML5 Video Attributes Market Share Report
所以,技術上並不是問題。做還是不做,我猜測最大的原因是視頻格式轉換成本。
這些視頻網站已經積累的大量的視頻資源,早期基本上是 Flash Only 的 FLV 格式。後期如果繼續用Flash Player 來播放視頻,為了實現高清的支持,很可能使用的是 MP4 的馬甲 F4V 格式。這兩種文件格式的標準可以看這裡: F4V/FLV Technology Center。
FLV 格式早期使用過兩種編碼,分別是 Sorenson Spark 和 On2 VP6 (下表來自 拋棄FLV,迎接MP4——製作Flash Player支持的H.264視頻格式),這兩種格式 H5 肯定是不支持的。
因此,要將現有的海量視頻數據轉換成 MP4,需要一個相當的過程,視頻網站可能考慮過這個過程比較漫長,就暫時將該工作擱置(或者正在平穩進行中)。
比如,YouTube 就已經把自己的所有視頻轉向 WebM(這是 Google 推動的視頻格式),可以看這裡:YouTube Swiftly Converts Videos in WebM Format。
但 Google 畢竟是鈔票多到用不完,牛人多到一個團,從標準到產品到實現一條龍的一流公司。對於天朝這些小公司比如 愛X藝優X庫馬鈴薯之類來說,除了技術市場鈔票廣告之外,還必須考慮國情。
在偉大而神奇的中國,大量的平台依然是Windows XP + IE6 組合,讓這些系統升級到 IE8都嫌困難,更別提安裝 Chrome 和 Firefox 這種現代瀏覽器了。針對於它們,Flash Player 是唯一的選擇。既然用 Flash Player 來播放視頻,那麼 FLV 還是 MP4 顯然就無所謂了。
不過,一切都會改變的,至少在我們的有生之年,它們是一定會改過來的。
相比用 H5 全平台看視頻,我更期待在有生之年登上月球(火星太遠就不考慮了)。不過就目前科技的發展速度來看,有點兒懸。
另外吐槽題主3點:
1. 不是所有人都買得起 MBP 的……
2. 發熱不能全怪在Flash Player 頭上……
3. 就算你一定要怪在 Flash Player 頭上,也不要僅僅是怪在視頻播放器頭上……
==================
2014-09-22更新:
按照評論裡面的同學說的,我用 Android+Firefox 訪問了優酷/土豆等網站,確實,它們在移動設備上已經支持 H5了。
所以我上面猜測的 視頻格式轉換成本 的原因應該是不存在的。
那麼,我再次猜測,原因可能是以下幾點:
1. Flash Player 在 PC 端的體驗和表現更加一致,更容易管控播放器質量和進行版本迭代;
2. 由於前面講到的原因,H5 的支持在 Windows XP 上是無望的,只能使用 Flash Player,國內企業必須考慮這點;
3. 為什麼不檢測瀏覽器版本實現不同平台使用不同的播放器,參照1的解釋。
1、做到根據操作系統、瀏覽器或者用戶自定義來使用不同的播放器是否有難度?
播放器主要功能移植非常簡單
老的FLV轉MP4非常簡單, 而且快
2、如果有難度,問題點在哪裡?
見下文
3、如果不算難,為什麼不做?
為啥不做? 道理很簡單, 因為利益
我以前在某視頻網站做過大半年Flash視頻播放器, 還做過4~5年的網頁設計/程序, 對這兩種視頻播放技術還都算了解.
Flash視頻流行前, 主要是wmv/rm/mpg等, 機器上沒裝對應插件就不能放, 而且沒法做太多交互, 用戶體驗非常差..
後來以Youtube帶領的視頻分享網站開始流行, Flash的"免插件"和良好的交互擴展使得幾乎100%的用戶都能看到同樣的視頻.
國內視頻網站差不多是在05~06年左右開始流行的, 當時鋪天蓋地的視頻網站, 泡沫充斥~~~但都找不到盈利點, 主要經濟來源是網頁上嵌入傳統banner廣告, 還有利用Flash包容性強的優點, 嵌入各種3A啦二三線廣告公司拿過來的各種奇葩廣告格式.(很多廣告公司還要求獲取用戶觀看視頻時候的行為記錄)
這個盈利方式在如今已上市的優土網(優酷+土豆)依然保留著.
HTML5能做廣告嗎? 當然可以, 但是因為html/js明碼, 所以很容易被屏蔽!
Flash里的廣告代碼其實也能屏蔽, 只是技術要求較大,相信大部分嘗試過屏蔽優土網廣告的人都見過50秒黑屏讀秒, 而且使用反廣告插件容4易被插入更噁心的釣魚/返利代碼.
(這裡推薦2個比較靠譜的反廣告軟體, "視頻廣告過濾大師"和"AdSafe3", 後者前段時間也爆出了插入返利代碼的問題)
有一個媽媽再也不擔心我的MacBook 發熱了,使用HTML5播放,支持部分網站,或者把瀏覽器的agent調成iPad,我目前在MacBook pro是這麼用的。
作為瀏覽器的初學者在這裡不請自答一下。
1. 做到根據操作系統、瀏覽器或者用戶自定義來使用不同的播放器是否有難度?
理論上並沒有難度。
網站方面,伺服器本身通過http的請求header中的useragent欄位,或者是頁面js通過檢查useragent能夠自動判別該瀏覽器的版本以及所處平台,再針對不同平台的不同瀏覽器做個大致分類這樣一定是不麻煩的。至於片源問題可能稍微是點難點,這個取決於該網站本身的視頻數量及大小。
至於用戶自定義方面,其實和伺服器無關,輕巧點的方法就是修改UA讓伺服器「誤以為」本瀏覽器搭載在如ios上等無法支持flash player的平台上,就可以打開相應的html5播放器的視頻播放頁面了。
2、如果有難度,問題點在哪裡?
難度已經上述說過了,至於網站本身是否需要提供如此服務則是網站本身考慮的事情。
3、如果不算難,為什麼不做?
目前主流的視頻網站一般都有對UA進行判別然後給上不同的視頻播放頁面。
所以並不存在不做的情況,而是網站對於提供內容的策略有自己的考慮。當然考慮是否妥當不是用戶所能夠左右的。
說一個不太對題的答案。
Click to Plugin for China這個Safari擴展會把flash自動替換成H5,如果不能播放,還可以切換回去。
至於哪裡找,請自行搜索。手機打字不容易。
目前主流是:PC端用flash播放,移動端用H5播放器,雖然flash已死,h5永生!但是h5存在各種各樣的兼容性問題,處理起來費時、費力!
其實發熱的問題還真賴不到flash頭上,flash只是一個插件,能不能調用到硬體加速都是瀏覽器說了算
優先播放html5版,如果不行切換成flash版,js控制很簡單。之所以不做,是有的播放流地址在電腦端大部分瀏覽器下只能通過flsh播放。
推薦閱讀:
※使用 Firefox 時如何讓某一網站固定使用 HTTPS 打開?
※chrome默認禁止flash的意圖是什麼?
※為何Chrome會攔截12306的網站提示不安全?
※谷歌為什麼開發 Google+ ?
※為什麼 Chrome 瀏覽器的主頁會被篡改為 hao123 ?遇到這種情況要如何修復?
TAG:GoogleChrome | 前端開發 | 視頻網站 | HTML5 | AdobeFlash |