android獵豹瀏覽器可以播放各個網站的視頻,為什麼調用WebView不能播放?如何實現?
webview可以播放優酷的視頻,新浪、56等網站好像都不能正常播放,系統自帶的瀏覽器不能播放,獵豹可以,請問如何實現的?
補充:
1)UC瀏覽器可以直接播放,不用啟動單獨播放器,直接在flash里就可以。
同樣是flash插件為什麼uc可以直接播放,有的瀏覽器,尤其是系統自帶的瀏覽器為什麼做不到?
就是通過視頻網址 解析出真實的 播放地址, 2012年的時候, 這項技術還算是很新的, 屬於視頻聚合軟體中比較核心的功能, 那時候開發這個很多公司都是要簽保密協議的.
具體用什麼語言實現 各種語言都是可以的啊, 反駁一下有人說不能用js來做.
現在其實很常見了, 各種視頻聚合軟體, 盒子軟體, 大多都是用這樣的方式做的. 具體抓取的細節就不多贅述了.
授人魚不如授人漁
如果你也想做的話, 可以看下 媽媽再也不用擔心我的macbook發燙了計劃2.0Beta 這個Chrome 插件, 追一下源碼, 你就會發現一個js文件, 然後你js文件下載下來, 自己研究就成.
Java - 通過優酷網視頻播放網址解析出Mp4格式的單個文件 這是我當時摳出來的優酷的方法, 現在好像失效的了, 你可以如法炮製一下.
當然現在github上應該有很多開源的項目了, 不用這麼麻煩了, 你可以自己去搜索一下.謝邀
首先,獵豹瀏覽器的網路視頻播放部分是交給第三方去做的[1]
然後,獵豹的做法是通過JS來提取頁面上的播放視頻原地址,然後把地址放到自己的播放器裡面去播放,具體js文件大家可以通過解包獵豹瀏覽器的apk找到
所以樓主如果想和獵豹做一樣的事情的話,要先從研究獵豹的js文件開始
以上
針對@一隻阿怪 的質疑:
仔細看這些js會發現,有些是調API,有些是做了些Trick模擬Flash播放器請求,各有各的辦法
[1]Vitamio - Android 與 iOS 平台最專業的多媒體開發框架
把useragent改為手機端的,手機網頁才支持播放,flash一般不支持
不贊成Bill Cheng的答案
因為在移動瀏覽器端,視頻播放是移動瀏覽器端的一個大的市場,而獵豹對現在手機端視頻的解析,並不是用js去分析視頻文件路徑。
移動端,安卓原生並不支持flash,而很多視頻網站,都對手機大部分有HTML播放,只要支持HTML5的瀏覽器,就並不需要用獵豹這種第三方瀏覽器去解析並播放,原生瀏覽器也能做到。
那麼獵豹是怎麼解析的呢,那就是曲線救國。
獵豹收集了大部分的視頻網站,並自己解析出視頻介面,來實現移動端的視頻播放功能。
流程就是
1.收集視頻網站列表
2.分析出視頻播放的介面
3.當移動端瀏覽器訪問該視頻網站的時候,獵豹會直接去調用該視頻網站的API,得到視頻文件的URL
4.某些特殊網站,會將網站URL發送到獵豹伺服器,獵豹雲端解析後,返回視頻文件URL。
5.用獵豹自帶的解碼器播放該視頻。
這種方法是最笨,也是最簡單的方法,能夠把很多不支持HTML5的視頻網站,實現手機端的播放。
如果真的像樓上說的,用js文件去解析,那麼,你可以自己做個測試,自己搭建一個網站,用第三方flash來做視頻播放,那麼獵豹將無法解析。而插入第三方flash的代碼里,有明文的視頻文件地址,所以,js解析視頻地址是不成立的。
之前抓包分析過iOS端獵豹瀏覽器
首先當你點擊某視頻地址的時候,瀏覽器是能夠得知URL的。然後獵豹瀏覽器請求了一個自己的API,把地址解析成真實的視頻文件地址,然後調用自己的播放器來播放這個視頻文件。
抓包的截圖:
把返回的json數據序列化
可以看到,這裡請求的是獵豹的介面,獲取的json文件實際就是視頻的M3U8地址,獲取到M3U8地址之後,就可以調用獵豹的視頻播放器來播放M3U8視頻了。
實際上獵豹只是比普通的webview多做了一步,就是解析視頻的M3U8地址,得到了M3U8地址就可以使用自己的播放器來播放視頻了。
我曾經寫過一個包含WebView的Android應用,剛剛又特意打開新浪和56驗證了一下,事實上他們都是可以基於HTML5正常播放的,
只是要記得加上
setJavaScriptEnabled(true);
和setDomStorageEnabled(true);
MainActivity.class
public class MainActivity extends ActionBarActivity {
public WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initUI();
}
protected void initUI()
{
// Initialize the WebView if necessary
if (webView == null)
{
// Create the webView
webView = (WebView)findViewById(R.id.myWebView1);
WebSettings settings = webView.getSettings();
settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);
settings.setUseWideViewPort(true);
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
// 應用可以有緩存
settings.setAppCacheEnabled(true);
webView.setWebViewClient(new MyWebViewClient());
webView.loadUrl("file:///android_asset/htmlbundle/homepage.html");
}
}
final class MyWebViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
}
}
測試機型:NEXUS7 2012
Android 5.0
1. 獵豹瀏覽器的視頻播放用了第三方的解決方案,如上海改變科技公司等等的sdk進行播放
2. 直接取視頻網站的視頻地址,然後用上述sdk進行播放,這個服務也是第三方解決方案,這個公司的名字忘記了,是個廣東公司
推薦閱讀:
※2014 年買魅族 MX2 還行嗎?
※蘋果會和魅族合作么?
※如何評價魅藍 note2 和紅米 note2?
※魅族 Flyme 為什麼不再內置 Google 服務相關組件?
※感覺Flyme真的很難用,想聽聽大家的看法?
TAG:視頻 | AdobeFlash | WebKit | Android | 獵豹瀏覽器 |