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小时内与您取得联系。