TML5自帶了一個原生視頻播放器。它在瀏覽器中配備了簡單的用戶界面、功能和一些基本的控件。盡管通過瀏覽器的默認視頻播放器的功能完美運行,但用戶界面并不那么美觀和時尚,總體上并不令人滿意。
因此,大多數現代Web應用程序和平臺,如Udemy、Netflix、YouTube和Amazon Prime,不會將默認內置的HTML5視頻播放器提供給他們的用戶。相反,他們會構建自己定制的版本,具有時尚的用戶界面,使其平臺更具吸引力和用戶友好性。
如果你曾經好奇這些公司和Web平臺是如何完成這樣的壯舉的,那么本文就是為你而寫的。
在按照逐步指南進行操作時,您將獲得一些實踐經驗,該指南將教您如何構建和自定義自己的HTML5視頻播放器。您將學習如何自定義用戶界面、擴展功能,并構建自己的出色的自定義控件和功能。
您還將學習如何僅使用瀏覽器中提供的原生Video API來構建所有這些功能——無需外部庫或工具。
(本文內容參考:java567.com)
希望可以通過這篇文章,能夠給你得到幫助。(感謝一鍵三連)
學習深入理解HTML5的audio和video。
在HTML5播放一個視頻,很簡單,只需要一行代碼:
<video src="resources/dadaqianduan.mp4" autoplay></video>
了解視頻文件格式:
Audio Video InterLeaved .avi
Flash Video .flv
MPEG-4 .mp4
Matroska .mkv
Ogg .ogv
音頻和視頻編解碼器
編解碼器可以理解為一些算法代碼,用于處理視頻,音頻或者其元數據的編碼格式。對音頻或視頻文件進行編碼,可使得文件大大縮小,便于在因特網上傳輸。
音頻編解碼器:
MP3,使用ACC音頻
Wav,使用Wav音頻
Ogg,使用OggVorbis音頻
視頻編解碼器:
MP4,使用H.264視頻,AAC音頻
WebM,使用VP8視頻,OggVorbis音頻
Ogg,使用Theora視頻,OggVorbis音頻
audio元素支持的音頻格式MP3,Wav,Ogg;video元素支持的格式MP4,WebM,Ogg。
在HTML5中audio和video元素提供的接口包含了一系列的屬性,方法和事件,這些接口可以幫助開發完成對音頻和視頻的操作。
那么如何在頁面中添加音頻和視頻呢?
音頻
<audio src="resources/audio.mp3">
</audio>
視頻
<video src="resources/video.mp4" width="600" height="200">
</video>
因為各種瀏覽器對音頻和視頻的編解碼器的支持不一樣,為了能夠在各種瀏覽器中正常使用,可以提供多個源文件。
<audio src="resources/audio.mp3">
<source src="song.ogg" type="audio/ogg">
<source src="song.mp3" type="audio/mpeg">
</audio>
<video src="resources/video.mp4" width="600" height="200" controls>
<source src="movie.ogg" type="video/ogg codes=`theora,vorbis` ">
<source src="movie.mp4" type="video/mp4">
</video>
使用source元素替代了audio或video的標簽屬性src。
元素的標簽特性
<video src="resources/video.mp4" autoplay></video>
<video src="resources/video.mp4" controls></video>
<video src="resources/video.mp4" controls loop></video>
<video src="resources/video.mp4" controls preload="auto"></video>
<video src="resources/video.mp4" controls poster="images/none.jpg"</video>
<video src="resources/video.mp4" width="600" height="200" controls></video>
接口屬性
<!DOCTYPEHTML>
<html>
<head>
<meta charset="utf-8">
<title>視頻播放時的快進</title>
<script type="text/javascript">
function Forward() {
var el = document.getElementById("myPlayer");
var time = el.currentTime;
el.currentTime = time+300;
}
</script>
</head>
<body>
<video id="myPlayer" src="resources/video.mp4" width="600" height="200" controls>
</video>
<br/>
<input type="button" value="快進" onclick="Forward()"/>
</body>
</html>
接口方法
代碼示例使用接口:
<!DOCTYPEHTML>
<html>
<head>
<meta charset="utf-8">
<title>播放與暫停</title>
<script type="text/javascript">
var videoEl = null;
function Play() {
videoEl.play();
}
function Pause() {
videoEl.pause();
}
window.onload = function(){
videoEl = document..getElementById("myPlayer");
}
</script>
</head>
<body>
<video id="myPlayer" width="600">
<source src="resources/video.mp4" type="video/mp4">
</video><br>
<input type="button" value="播放" onclick="Play()"/>
<input type="button" value="暫停" onclick="Pause()"/>
</body>
</html>
捕獲事件的方式
捕獲事件有兩種方法:一種是添加事件句柄,一種是監聽。
<video id="myPlayer" src="resources/video.mp4" width="500" onplay="video_playing()">
</video>
// 監聽方式
var videoEl = document.getElementById("myPlayer");
videoEl.addEventListener("play",video_playing);
接口事件
定義全局的視頻對象
代碼如下:
<script type="text/javascript">
// 定義全局視頻對象
var videoEl = null;
// 網頁加載完畢后,讀取視頻對象
window.addEventListener("load", function() {
videoEl = document.getElementById("myPlayer")
});
</script>
添加進度顯示功能
代碼如下:
<script type="text/javascript">
function Progress() {
var el = document.getElementById("progress");
el.style.width = (videoEl.currentTime/videoEl.duration)*720 + "px"
document.getElementById("info").innerHTML = s2time(videoEl.currentTime) + "/" + s2time(videoEl.duration);
}
function s2time(s) {
var m = parseFloat(s/60).toFixed(0);
s = parseFloat(s%60).toFixed(0);
return (m<10?"0"+m:m)+":"+(s<10?"0"+s:s);
}
window.addEventListener("load",function(){videoEl.addEventListener("timeupdate",Progress)});
window.addEventListener("load",Progress)
添加靜音和調節音量的功能
消除靜音videoEl.muted=false;靜音效果videoEl.muted=true;videoEl.volume=e.value;修改音量的值。
添加慢進和快進功能
近的一個前端外包的項目中,寫的頁面在chrome中打開時,video標簽都不能自動播放(奇怪的是相同的視頻,兩個月前在chrome下播放還是正常的;但現在,mac下一直無法播放,只有在controls的模式下點擊播放按鈕才可以播放;而windows下按F5刷新后可以播放,但是右鍵刷新頁面無法播放),Firefox卻是正常播放。
最后找到了一篇博客說是要在video標簽中添加muted屬性,親測有效,代碼如下:
原理就是大多數瀏覽器在都支持靜音的視頻播放,如果你的視頻需要有聲音,或者要用音頻,這個還是不能解決問題。
問題2
視頻太大導致的不能自動播放問題(原因往往在于,視頻要播放的時候,視頻本身還沒加載完。。。)基于這個思路,我寫了這個代碼,就是反復的去執行播放操作,成功以后停止,親測有用。
var play = setInterval(function(){
console.log(1);
var myVideo = $(‘#video’)[0]; //獲取視頻video
if (myVideo.paused){
myVideo.play();
}else{
clearInterval(play);
//myVideo.pause();
}
},100)
以上為切圖網 qietu.com原創,轉載請注明來源。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。