關鍵詞:視頻處理、音頻處理、Canvas(畫布)
一、視頻處理
1、基本內容
1.1、使用HTML實現視頻處理:
-
video標簽
如果當前瀏覽器不支持video,可以在veido里面編寫提示內 src - 引入視頻文件的路徑 autoplay - 自動播放視頻
2)souce元素
<video>
<source src="一種視頻格式"/>
<source src="一種視頻格式"/>
<source src="一種視頻格式"/>
</video>
1.2、video支持的視頻格式
MP4 - 目前比較主流
OGG - 多用于移動端
WebM - 目前唯一支持超高清格式
1.3、video元素的屬性
src - 視頻路徑
autoplay - 自動播放
controls屬性 - 提供視頻播放的控制面板,只有屬性名,沒有屬性值
loop - 視頻的循環播放
poster屬性 - 在視頻播放之前,顯示一張圖片
width/height - 設置顯示視頻的寬度和高度
preload - 預加載:
auto-(默認值)自動加載
none-不加載
metadata-只加載視頻的基本信息(不含視頻)
2、高級內容
2.1、 方法
play() - 播放視頻
pause() - 暫停視頻
load() - 重新加載音頻/視頻元素
canPlayType() - 判斷當前瀏覽器是否支持指定視頻格式
2.2、 事件
onplay - 當視頻開始播放時調用
onpause - 當視頻開始
onended - 當視頻結束時被觸發
onerror - 當視頻錯誤時被觸發
oncanplay - 當整個媒體可以順利播放時,就會觸發這個事件
oncanplaythrough - 不考慮整體狀態,只要下載了一定的可放幀會會觸發這個事件
onprogress - 用于更新媒體的下載進度,會周期性的觸發
2.3、 屬性
paused - 表示判斷當前是否暫停,true表示暫停
ended - 表示判斷當前視頻是否播放完畢,true表示播放完畢
duration - 表示當前視頻的時長,單位為s
currentTime - 表示當前視頻播放的位置
2.4、 video元素
當video視頻全屏時,瀏覽器會把video放到最前端,圖片是有顯示的,但被視頻覆蓋了
利用video事件完成廣告效果
bug: 不能全屏
解決方案:
等到HTML5更新
使用video元素提供的高級編程自己實現
使用目前封裝好的video的JS庫 video.js
3、代碼示例
<body>
<video controls poster="gg.jpg" width="300px" height="400px" style="background:black" preload="auto">
您的瀏覽器不支持播放該格式視頻
<source src="video.mp4">
<source src="video.ogg">
<source src="video.webm">
</video>
<button id="btn"></button>
</body>
<script>
var btn = document.getElementById('btn');
btn.onclick = function(){
var video = document.getElementsByTagName('video')[0];
//paused當前視頻是否暫停,暫停返回true
if (video.paused) {
video.play();
btn.innerHTML = "暫停";
}else{
video.pause();
btn.innerHTML = "播放";
}
video.onplay = function(){
console.log("====");
}
video.onended = function(){
console.log("++++");
}
}
</script>
4、運行結果
二、音頻處理
1、 audio元素
第一種:只支持一種音頻格式
<audio src="音頻文件路徑"></audio>
第二種: 同時引入多個音頻格式
<audio>
<source src="一種音頻格式">
<source src="一種音頻格式">
<source src="一種音頻格式">
</audio>
2、audio元素支持的音頻格式
MP3 - 目前最主流
OGG
WAV
3、代碼示例
<body>
<audio src="audio.mp3" autoplay loop controls></audio>
</body>
三、Canvas(畫布)
1、基本內容
1.1、 HTML5提供的新元素
1.2、 Canvas在HTML頁面提供畫布的功能
可以在頁面中繪制各種圖形
1.3、 canvas繪制的圖形與HTML頁面無關
無法通過DOM獲取繪制的圖形
無法為繪制的推行綁定DOM事件
1.4、 只能使用canvas提供的API
1.5、 主要用途
在HTML頁面中繪制圖標(例如柱狀圖、餅狀圖等)
網頁游戲 - Flash技術
使用HTML5中的canvas
1.6. 如何使用canvas
1)在HTML頁面中定義<canvas>元素
默認寬度 300*150
效果上類似于div
問題:
定義canvas元素的寬度和高度
style設置-繪制圖形被拉伸
屬性方式 - 沒有任何問題
2)獲取<canvas>元素
3)獲取畫布對象
getContext("2d");
參數類型是string類型,參數必須是“2d”或“3d”(固定寫法)
4)使用Canvas提供的API
context.fileRect(10,10,100,100);
2、高級內容
1、API提供的工具非常廣泛,包括創建圖形、顏色、文本等
2、矩形
1)繪制實心矩形
fillRect(x,y,width,heigth)
2)繪制空心矩形
strokeRect(x,y,width,heigth)
3)清除指定區域的像素,類似于橡皮擦
clearRect(x,y,width,height)
3.、設置顏色 - 如果在創建圖像時,沒有指定顏色,那么所有圖形都會使用純黑色
1)聲明形狀線條的顏色
strokeStyle
2)聲明形狀內部區域的顏色
fillStyle
3)透明度屬性。可以設置畫布上圖形的透明度
globalAlpha
HTML5的難度
HTML5的核心API相對來講,都不難
HTML5的案例真正難在邏輯(js代碼)
總結:HTML5離不開js
第二階段js,抓緊復習
個人不建議 - 留級
4、 漸變效果 - canvas支持的漸變效果包括線性漸變或射線漸變,并且支持顏色轉折點
1)在畫布上創建一個漸變對象
var grd = context.createLinearGradient(x1,y1,x2,y2)
x1,y1 - 基準線的起點坐標值
x2,y2 - 基準線的終點坐標值
var grd = context.createRadialGradient(x1,y1,r1,x2,y2,r2)
x1,y1 - 第一個基準圓的元素坐標值
r1 - 第一個基準圓的半徑
x2,y2,r2同上
返回一個漸變對象
2)給漸變對象指定漸變顏色值
addColorStop(position,color)
position - 指設置漸變顏色的位置(0-1)
3) 將漸變對象作為畫布對象的顏色
context.fillStyle = grd;
4) 繪制矩形
context.fillRect(0,0,400,400);
5、代碼示例
<script>
var canvas = document.getElementsByTagName('canvas')[0];
var context = canvas.getContext("2d");
function myCanvas() {
var r = Math.floor(Math.random()*256);
var g = Math.floor(Math.random()*256);
var b = Math.floor(Math.random()*256);
const WIDTH = canvas.width;
const HEIGHT = canvas.height;
var x = Math.random()*WIDTH;
var y = Math.random()*HEIGHT;
var width = Math.random()*WIDTH;
var height = Math.random()*HEIGHT;
//讓圖形生成在canvas里
if((x+width)>=WIDTH){
//重新生成
x = Math.random()*WIDTH;
width = Math.random()*WIDTH;
}
if((y+height)>=height){
y = Math.random()*height;
height = Math.random()*height;
}
context.strokeStyle = "rgb("+r+","+g+","+b+")";
context.strokeRect(x,y,width,height);
}
setInterval(myCanvas,1000);
</script>