多數視頻是通過插件(比如 Flash)來顯示的。然而,并非所有瀏覽器都擁有同樣的插件。
HTML5 規定了一種通過 video 元素來包含視頻的標準方法。
在HTML5中,video元素目前支持三種格式的視頻文件,
1.Ogg = 帶有 Theora 視頻編碼和 Vorbis 音頻編碼的 Ogg 文件
2.MPEG4 = 帶有 H.264 視頻編碼和 AAC 音頻編碼的 MPEG 4 文件
3.WebM = 帶有 VP8 視頻編碼和 Vorbis 音頻編碼的 WebM 文件
那么在HTML5中如何顯示視頻呢?例子如下:
<video src="demo.mp4" width="500" height="250" controls="controls">您的瀏覽器不支持此種視頻格式。</video>
好了,現在來解釋下video元素中各屬性的含義,其中width、height就不解釋了啊,主要說下controls,顧名思義,controls 就是控件們,哈哈,就是視頻的播放、音量暫停等控件。video元素中間插入的漢字,聰明的你一定知道的,是提示用戶瀏覽器不支持視頻格式使用的。
需要注意的是,要確保適用于Safari 瀏覽器,視頻文件必須是 MP4類型。而ogg格式的視頻則是適用于Firefox、Opera 以及Chrome 瀏覽器。Internet Explorer 8 不支持 video 元素。在 IE 9 中,將提供對使用 MPEG4 的 video 元素的支持。
當然了,我們如果不確定自己的瀏覽器支持什么格式的視頻,可以先檢測一下。若是不想麻煩,那怎么辦呢?我們可以這樣:
<video width="500" height="250" controls="controls">
<source src="movie.ogg" type="video/ogg">
<source src="movie.mp4" type="video/mp4">
您的瀏覽器不支持此種視頻格式。
</video>
video 元素允許多個 source 元素。source 元素可以鏈接不同的視頻文件。瀏覽器將使用第一個可識別的格式,這樣我們只要多準備幾個不同格式的視頻就可以了。
接下來,介紹幾個video標簽的屬性,
1.autoplay :出現該屬性意味著視頻在就緒后將自動播放,用法:autoplay="autoplay"
2.controls :出現該屬性意味著向用戶顯示控件,如播放按鈕等,用法:controls="controls"
3.height:設置高度
4.width:設置寬度
5.loop:自動重播,用法:loop="loop"
6.preload:視頻在頁面加載時進行加載并預備播放,用法:preload="auto"
auto - 當頁面加載后載入整個視頻
meta - 當頁面加載后只載入元數據
none - 當頁面加載后不載入視頻
注意:若使用了autoplay,則忽略preload
7.src:要播放視頻的url
更多嵌入式、物聯網、安卓、Java、HTML5等請繼續關注華清遠見成都中心!
要想成為真正的全棧開發者,自己會設計那是必不可少
sketch工具
無聊花了半天做的,其實就是拿一個<audio>實現的,把audio給隱藏了..然后獲取播放進度,切歌就是替換audio的src路徑,<audio>標簽有很多api足以自己動手做一個播放器了,無需第三方庫,用到了jQuery,不過這個只是個demo做著玩兒的,還有些功能沒寫了。
http://show.lslbk.cn/html5/musicApp/musicApp.html
http://myblog-1253111993.cosgz.myqcloud.com/file/musicAppH5.zip
們做安卓開發時,webview中發現html5 視頻的autoplay根本沒實現,查看了下android 源碼HTMLVideoElement.cpp也未見相應處理,網上有資料顯示,這可能關乎UI線程與后臺線程的協調性,我看,以后的升級版本總會解決這個問題的。
html5標簽屬性不支持,那只有通過javascript來處理了
演示apk下載地址:http://download.csdn.net/detail/qiushi_1990/9513038
github源碼下載:https://github.com/qiushi123/H5Demo
下面是實現步驟和原理
不要忘記了webview.getSettings().settings.setJavaScriptEnabled(true)啟用javascript,AndroidManifest加入INTERNET權限
@Override
public void onPageFinished( WebView view, String url) {
view.loadUrl("javascript:try{autoplay();}catch(e){}");
}
實例代碼
public class Html5VideoAutoPlay extends Activity { WebView webview = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.html5video); webview = (WebView)findViewById(R.id.webview); webview.getSettings().setJavaScriptEnabled(true); webview.setWebViewClient(new WebViewClient(){ /** * 當前網頁的鏈接仍在webView中跳轉 */ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } /** * 處理ssl請求 */ @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); } /** * 頁面載入完成回調 */ @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); view.loadUrl("javascript:try{autoplay();}catch(e){}"); } }); webview.setWebChromeClient(new WebChromeClient() { /** * 顯示自定義視圖,無此方法視頻不能播放 */ @Override public void onShowCustomView(View view, CustomViewCallback callback) { super.onShowCustomView(view, callback); } }); webview.loadUrl("file:///sdcard/html/video.html"); } @Override protected void onPause() { if(null != webview) { webview.onPause(); } super.onPause(); } }
html5video.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
video.html
<body> <video id="video" src="b.mp4" width="480" height="320" controls loop> don't support html5 </video> </body> <script type="text/javascript"> var video = document.getElementById("video"); video.play(); </script>
上面的src可以引入本地視頻b.mp4,
也可以引入網上視頻:http://2449.vod.myqcloud.com/2449_43b6f696980311e59ed467f22794e792.f20.mp4
個人覺得html5結合Android會讓未來各種技術實現越來越簡單。到我的個人博客查看更多h5與安卓的結合案例。
也可以關注我github里的其他開源項目。
github:https://github.com/qiushi123?tab=repositories
實例圖片
效果圖
編程小石頭,為分享干貨而生!據說,每個年輕上進,顏值又高的互聯網人都關注了編程小石頭。?
*請認真填寫需求信息,我們會在24小時內與您取得聯系。