HTML5筆記2——HTML5音/視頻標簽詳解

来源:http://www.cnblogs.com/jiekzou/archive/2016/12/29/6227996.html
-Advertisement-
Play Games

音視頻的發展史 早期:<embed>+<object>+文件 問題:不是所有瀏覽器都支持,而且embed不是標準。 現狀:Realplay、window media、Quick Time 、Flash 問題:每個廠商每個標準,網站編碼和格式也都不相同,flash的出現解決了面的問題,但是apple在 ...


音視頻的發展史

早期:<embed>+<object>+文件

問題:不是所有瀏覽器都支持,而且embed不是標準。

現狀:Realplay、window media、Quick Time 、Flash

問題:每個廠商每個標準,網站編碼和格式也都不相同,flash的出現解決了面的問題,但是apple在07年決定任何設備將不再支持flash。而安卓也在4.0版本之後不再支持Flash,

因為Flash很占記憶體。

HTML5認為瀏覽器應該原生支持音視頻,因為他們現在也是web中的一等公民了!

視頻格式的簡單介紹

常見的視頻格式

         視頻的組成部分:畫面、音頻、編碼格式

         視頻編碼:H.264、Theora、VP8(google開源)

其中H.264是收費的。

常見的音頻格式

         視頻編碼:ACCMP3、Vorbis

其中ACC、MP3是收費的。

HTML5支持的格式

HTML5能在完全脫離插件的情況下播放音視頻,但是不是所有格式都支持。

HTML5支持的視頻格式:

Ogg =帶有Theora視頻編碼+Vorbis音頻編碼的Ogg文件

         支持的瀏覽器:F、C、O

MEPG4=帶有H.264視頻編碼+AAC音頻編碼的MPEG4文件

         支持的瀏覽器: S、C

WebM=帶有VP8視頻編碼+Vorbis音頻編碼的WebM格式      支持的瀏覽器: I、F、C、O

註:各瀏覽器簡寫(F:火狐 、C:谷歌 、O:蘋果、 I:IE 、 S:搜狗)

因為H.264是收費的,那麼MEPG4同樣也是收費的,MEPG4就是我們常說的MP4。MP4是一種很古老的視頻格式了,用過MP4的小伙伴應該知道。MP4各方面的技術也非常成熟,唯一不好的地方就是收費。

<Video>的使用

第一種

<video src="文件地址" controls="controls"></video>

此種方式,在不支持HTML5相關視頻格式的瀏覽器中顯示為空白,這很不友好。

第二種

<video src="文件地址" controls="controls">
         您的瀏覽器暫不支持video標簽。播放視頻
</video>

此方式將在不支持HTML5相關視頻格式的瀏覽器中顯示自定義的文字。若支持HTML5則顯示結果和第一種一樣。

第三種

<video  controls="controls"  width="300">
         <source src="move.ogg" type="video/ogg" >
         <source src="move.mp4" type="video/mp4" >
         您的瀏覽器暫不支持video標簽。播放視頻
</video>

此種方式可以讓瀏覽器來選擇支持的視頻格式進行播放,如上,如果ogg格式支持,則播放ogg視頻,如果ogg不支持,則判斷mp4是否支持,如果MP4支持,則播放mp4格式視頻。如果mp4格式也不支持,則顯示自定義文本。

Video的常見屬性

屬性

描述

Autoplay

Autoplay

視頻就緒自動播放

controls

controls

向用戶顯示播放控制項

Width

Pixels(像素)

設置播放器寬度

Height

Pixels(像素)

設置播放器高度

Loop

Loop

播放完是否繼續播放該視頻,迴圈播放

Preload

Proload

是否等載入完再播放

Src

url

視頻url地址

Poster

Imgurl

載入等待的畫面圖片

Autobuffer

Autobuffer

設置為瀏覽器緩衝方式,不設置Autoplay才有效

Video的API方法

方法

屬性

事件

play()

currentSrc

play

pause()

currentTime

pause

load()

videoWidth

progress

canPlayType

videoHeight

error

 全屏操作

 

全屏

退出全屏

Webkit (Safari5.1 /Chrome 15)

element.webkitRequestFullScreen();

document.webkitCancelFullScreen();

Firefox (works in nightly)

element.mozRequestFullScreen();

document.mozCancelFullScreen();

W3C 提議

element.requestFullscreen();

document.exitFullscreen();

Video的API屬性

屬性

說明

audioTracks

返回可用的音軌列表(MultipleTrackList對象)

autoplay

媒體載入後自動播放

buffered

返回緩衝部件的時間範圍(TimeRanges對象)

controller

返回當前的媒體控制器(MediaController對象)

controls

顯示播控控制項

crossOrigin

CORS設置

currentSrc

返回當前媒體的URL

currentTime

當前播放的時間,單位秒 (快進快退10秒)

defaultMuted

預設是否靜音

defaultPlaybackRate

播控的預設倍速(正數表示加速,負數表示減速)

duration

返回媒體的播放總時長,單位秒

ended

返回當前播放是否結束標誌

error

返回當前播放的錯誤狀態

initialTime

返回初始播放的位置

loop

是否迴圈播放

mediaGroup

當前音視頻所屬媒體組 (用來鏈接多個音視頻標簽)

muted

是否靜音

networkState

返回當前網路狀態

paused

是否暫停

playbackRate

播放的倍速(加速、減速播放)

played

當前播放部件已經播放的時間範圍(TimeRanges對象)

preload

頁面載入時是否同時載入音視頻

readyState

返回當前的準備狀態

seekable

返回當前可跳轉部件的時間範圍(TimeRanges對象)

seeking

返回用戶是否做了跳轉操作

src

當前音視頻源的URL

startOffsetTime

返回當前的時間偏移(Date對象)

textTracks

返回可用的文本軌跡(TextTrackList對象)

videoTracks

返回可用的視頻軌跡(VideoTrackList對象)

volume

音量值(0~1之間)

Video的常用事件

事件

描述

abort

當音視頻載入被異常終止時產生該事件

canplay

當瀏覽器可以開始播放該音視頻時產生該事件

canplaythrough

當瀏覽器可以開始播放該音視頻到結束而無需因緩衝而停止時產生該事件

durationchange

當媒體的總時長改變時產生該事件

emptied

當前播放列表為空時產生該事件

ended

當前播放列表結束時產生該事件

error

當載入媒體發生錯誤時產生該事件

loadeddata

當載入媒體數據時產生該事件

loadedmetadata

當收到總時長,解析度和字軌等metadata時產生該事件

loadstart

當開始查找媒體數據時產生該事件

pause

當媒體暫停時產生該事件

play

當媒體播放時產生該事件

playing

當媒體從因緩衝而引起的暫停和停止恢復到播放時產生該事件

progress

當獲取到媒體數據時產生該事件

ratechange

當播放倍數改變時產生該事件

seeked

當用戶完成跳轉時產生該事件

seeking

當用戶正執行跳轉時操作的時候產生該事件

stalled

當試圖獲取媒體數據,但數據還不可用時產生該事件

suspend

當獲取不到數據時產生該事件

timeupdate

當前播放位置發生改變時產生該事件

volumechange

當前音量發生改變時產生該事件

waiting

當視頻因緩衝下一幀而停止時產生該事件

HTML5支持的音頻格式

HTML5在不使用插件的情況下也可以原生的支持音頻格式文件的播放,當然支持格式是有限的

HTML5支持的音頻格式:

Ogg             免費  支持的瀏覽器:C、F、O

MP3             收費  支持的瀏覽器: I、C、S

Wav             收費  支持的瀏覽器: F、O、S

<audio>的使用

同樣支持三中方式

方式一

<audio  src="文件地址" controls="controls"></audio>

方式二

<audio src="文件地址" controls="controls">
         您的瀏覽器暫不支持audio標簽。播放視頻
</video>

方式三

<audio controls="controls"  >
         <source src="happy.MP3" type="video/mpeg" >
         <source src="happy.ogg" type="video/ogg" >
         您的瀏覽器暫不支持audio標簽。播放視頻
</audio>

audio的常見屬性

屬性

描述

autoplay

autoplay

如果出現該屬性,則音頻在就緒後馬上播放。

controls

controls

如果出現該屬性,則向用戶顯示控制項,比如播放按鈕。

loop

loop

如果出現該屬性,則每當音頻結束時重新開始播放。

preload

preload

如果出現該屬性,則音頻在頁面載入時進行載入,並預備播放。

如果使用 "autoplay",則忽略該屬性。

src

url

要播放的音頻的 URL。

Demo,這裡我用的是FF瀏覽器

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <div style="background-color:lightblue;">
    <input type="button" value="播放" onclick="play();" />
    <input type="button" value="暫停" onclick="pause();"/>
    <input type="button" value="全屏" onclick="requestFullscreen();"/>
    <input type="button" value="退出全屏" onclick="exitFullscreen()"/>
    <input type="button" value="快進" onclick="speed()"/>
    <input type="button" value="快退" onclick="back()" />
    <input type="button" value="加速" onclick="speedUp()" />
    <input type="button" value="減速" onclick="speedDown()" />
    <input type="button" value="正常" onclick="speedNormal()" />
    <input type="button" value="調高音量" onclick="upper()" />
    <input type="button" value="降低音量" onclick="lower()" />
    </div>
    <video id="video" src="/video/多情俠客 鄭少秋 140120_高清.mp4" controls="controls" width="600" height="500" poster="/img/zsq.png">
        您的瀏覽器暫不支持video標簽播放視頻
    </video>
    <script type="text/javascript">
        var video = document.getElementById("video");
        //播放
        function play() {
            video.play();
        }
        //暫停
        function pause() {
            video.pause();
        }
        //全屏
        function requestFullscreen() {
            video.mozRequestFullScreen();
        }
        //退出全屏
        function exitFullscreen() {
            video.mozCancelFullScreen();
        }
        //快進
        function speed() {
            video.currentTime += 10; //快進10秒
        }
        //快退
        function back() {
            video.currentTime -= 10;//快退10秒
        }
        //加速
        function speedUp() {
            video.playbackRate = 2; //加速播放(2倍速度)
        }
        //減速
        function speedDown() {
            video.playbackRate = 1 / 2;//慢速播放(慢2倍)
        }
        //正常播放
        function speedNormal() {
            video.playbackRate = 1;//預設的播放倍速是1
        }
        //調高聲音
        function upper() {
            video.volume += 0.1;//聲音值的範圍是0-1
        }
        //調低聲音
        function lower() {
            video.volume -= 0.1;
        }
    </script>
</body>
</html>

運行效果如下:

音頻Demo,用法和video相似。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    音頻標簽的使用<br />
    <audio src="/audio/逃跑計劃 - 夜空中最亮的星.mp3" controls="controls">
        您的瀏覽器該升級了,趕緊換了吧,便於欣賞中國好聲音。
    </audio>
</body>
</html>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這裡分析了php面向對象中static靜態屬性和靜態方法的調用。關於它們的調用(能不能調用,怎麼樣調用),需要弄明白了他們在記憶體中存放位置,這樣就非常容易理解了。靜態屬性、方法(包括靜態與非靜態)在記憶體中,只有一個位置(而非靜態屬性,有多少實例化對象,就有多少個屬性)。 <?phpclass Hum ...
  • Consul 概念(摘錄): Consul 是 HashiCorp 公司推出的開源工具,用於實現分散式系統的服務發現與配置。與其他分散式服務註冊與發現的方案,比如 Airbnb 的 SmartStack 等相比,Consul 的方案更“一站式”,內置了服務註冊與發現框 架、分佈一致性協議實現、健康檢 ...
  • /** * 橋接模式 * @author TMAC-J * 應用於多維度方案 * 用組合的形式代替繼承 * 符合單一職責原則 * 一個類只有一個引起他變化的原因 * 增加程式靈活性 */ public class BridgePattern { abstract class Road{ Car ca... ...
  • 目錄: 設計模式六大原則(1):單一職責原則 設計模式六大原則(2):里氏替換原則 設計模式六大原則(3):依賴倒置原則 設計模式六大原則(4):介面隔離原則 設計模式六大原則(5):迪米特法則 設計模式六大原則(6):開閉原則 設計模式六大原則(1):單一職責原則 定義:不要存在多於一個導致類變更 ...
  • 在前一篇文中,我們對一個聚合SDK服務端所需要實現的功能作了簡單的分析。通過兩個主要場景的功能流程圖,我們可以看到,作為多款游戲要適配多個渠道的統一請求轉發中心,TYPESDK服務端主要需要實現的功能有以下幾個要點: l 接收請求和返迴響應,通常是HTTP的請求響應。 l 獲取配置信息。 n 識別游 ...
  • ECMAScript 6 是 JavaScript 語言的最新一代標準,當前標準已於 2015 年 6 月正式發佈,故又稱 ECMAScript 2015。 ES6對數據類型進行了一些擴展 在js中使用ES6必須先聲明 嚴格模式 "use strict" let變數 let特性: 1、不允許重覆聲明 ...
  • 項目上,經常需要對數組操作。所以,本文重點講解Array類型的一些常見的操作方法。 ...
  • “什麼是引用類型?”。如果你學過Java或者PHP編程的話,那麼我可以通俗的打個比方的講下,js中的引用類型就好比PHP或者Java中的Class類;那麼引用類型的值(即對象)好比PHP/Java中的Class類實例化後的對象。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...