使用HTML5多媒体,audio和video两个元素可以让用户不必借助flash player插件即可播放音频和视频。

小知识:视频文件包含了音频轨道,视频轨道和其他一些元数据。当我们播放视频的时候,音频轨道和和视频轨道是绑定在一起同步播放的。元数据部分包含了视频的封面,标题,子标题,字幕等相关信息。

一.使用audio元素

HTML5中的audio是用来播放声音文件的,支持ogg Vorbis , MP3,Wav等音频格式

用法如下:

您的浏览器不支持audio

效果图中,可以播放,可以暂停,可以调音量甚至可以静音,也可以观看到进度条的进展,甚至可以下载该文件。

HTML5的video元素是用来播放视频文件的,支持Ogg,MPEG4,WebM等视频格式。

效果图:

效果图中,可以播放,可以暂停,可以全屏,也可以观看到进度条的进展,甚至可以下载该文件。

两个案例里都有controls属性,

controls属性:用于提供播放,暂停和音量控件,也可以包含宽度和高度属性。

以上的音频和视频的代码虽然非常的简单粗暴,但是美中不足的是不能通过进度条来调控时间,不过我相信以后的HTML5是会改进的,会更加的牛逼,在多媒体这方面,我相信以后会有新的改进。

以下的代码是通过JavaScript来控制进度条的,它可以实现视频的进度:

HTML5-Video-Player

border:1px solid #000;

width:600px;

}

#video{

margin-top:0px;

}

#videoControls{

width:600px;

margin-top:0px;

}

.show{

opacity:1;

}

.hide{

opacity:0;

}

#progressWrap{

background-color:black;

height:25px;

cursor:pointer;

}

#playProgress{

background-color:red;

width:0px;

height:25px;

border-right:2px solid blue;

}

#showProgress{

background-color:;

font-weight:600;

font-size:20px;

line-height:25px;

}

HTML5_Video_Player

width="600" height="360"

preload controls

>

0

播放

全屏

// 获取要操作的元素

var video = document.getElementById("video");

var videoControls = document.getElementById("videoControls");

var videoContainer = document.getElementById("videoContainer");

var controls = document.getElementById("video_controls");

var playBtn = document.getElementById("playBtn");

var fullScreenBtn = document.getElementById("fullScreenBtn");

var progressWrap = document.getElementById("progressWrap");

var playProgress = document.getElementById("playProgress");

var fullScreenFlag = false;

var progressFlag;

// 创建我们的操作对象,我们的所有操作都在这个对象上。

var videoPlayer = {

init: function(){

var that = this;

video.removeAttribute("controls");

bindEvent(video, "loadeddata", videoPlayer.initControls);

videoPlayer.operateControls();

},

initControls: function(){

videoPlayer.showHideControls();

},

showHideControls: function(){

bindEvent(video, "mouseover", showControls);

bindEvent(videoControls, "mouseover", showControls);

bindEvent(video, "mouseout", hideControls);

bindEvent(videoControls, "mouseout", hideControls);

},

operateControls: function(){

bindEvent(playBtn, "click", play);

bindEvent(video, "click", play);

bindEvent(fullScreenBtn, "click", fullScreen);

bindEvent(progressWrap, "mousedown", videoSeek);

}

}

videoPlayer.init();

// 原生的JavaScript事件绑定函数

function bindEvent(ele, eventName, func){

if(window.addEventListener){

ele.addEventListener(eventName, func);

}

else{

ele.attachEvent('on' + eventName, func);

}

}

// 显示video的控制面板

function showControls(){

videoControls.style.opacity = 1;

}

// 隐藏video的控制面板

function hideControls(){

// 为了让控制面板一直出现,我把videoControls.style.opacity的值改为1

videoControls.style.opacity = 1;

}

// 控制video的播放

function play(){

if ( video.paused || video.ended ){

if ( video.ended ){

video.currentTime = 0;

}

video.play();

playBtn.innerHTML = "暂停";

progressFlag = setInterval(getProgress, 60);

}

else{

video.pause();

playBtn.innerHTML = "播放";

clearInterval(progressFlag);

}

}

// 控制video是否全屏,额这一部分没有实现好,以后有空我会接着研究一下

function fullScreen(){

if(fullScreenFlag){

videoContainer.webkitCancelFullScreen();

}

else{

videoContainer.webkitRequestFullscreen();

}

}

// video的播放条

function getProgress(){

var percent = video.currentTime / video.duration;

playProgress.style.width = percent * (progressWrap.offsetWidth) - 2 + "px";

showProgress.innerHTML = (percent * 100).toFixed(1) + "%";

}

// 鼠标在播放条上点击时进行捕获并进行处理

function videoSeek(e){

if(video.paused || video.ended){

play();

enhanceVideoSeek(e);

}

else{

enhanceVideoSeek(e);

}

}

function enhanceVideoSeek(e){

clearInterval(progressFlag);

var length = e.pageX - progressWrap.offsetLeft;

var percent = length / progressWrap.offsetWidth;

playProgress.style.width = percent * (progressWrap.offsetWidth) - 2 + "px";

video.currentTime = percent * video.duration;

progressFlag = setInterval(getProgress, 60);

}

}(this, document))

效果图:

大家复制到自己的编译器中便可以使用了,亲测有效(Chrome浏览器)

html5 audio js控制进度,HTML5多媒体的之audio和video。JavaScript控制进度条播放进度相关推荐

  1. js如何让高度和宽度保持一致_如何实现一个下载进度条/播放进度条

    技术上没太大难度,有难度的地方是怎么让整个动画比较流畅.一个主要问题是动画的滞后性:当下载进度到某个点的时候,你再用250ms的动画过渡过去,这个时候已经慢了,所以很多人可能因为这个原因或者嫌麻烦,直 ...

  2. 如何实现一个下载进度条/播放进度条

    技术上没太大难度,有难度的地方是怎么让整个动画比较流畅.一个主要问题是动画的滞后性:当下载进度到某个点的时候,你再用250ms的动画过渡过去,这个时候已经慢了,所以很多人可能因为这个原因或者嫌麻烦,直 ...

  3. 【多媒体课件制作软件】Focusky教程 | 设置隐藏底部播放进度条

    在播放演示文稿时,有些用户不大喜欢进度条显示在屏幕上,那么这里我们教大家如何在Focusky(也称为"FS软件")放映时显示或隐藏进度条. 新建工程,编辑演示文稿,在菜单栏中找到& ...

  4. audio.js – 随时随地,播放 HTML5 的声音

    audio.js是一个HTML5标签的简易包装.但它不仅在支持HTML5的浏览器上能够轻松调用标签,并在不支持HTML5的浏览器上也能通过Flash作为B计划使用.除此之外,audio.js所提供的界 ...

  5. html语音播放动画,html5 canvas+js音频可视化动画特效

    html5 canvas+js实现的音频可视化动画特效,选择一首本地音频文件播放查看效果. 查看演示 下载资源: 13 次 下载资源 下载积分: 20 积分 js代码 window.onload = ...

  6. 微信小程序实时获取播放进度(秒)

    微信小程序视频播放使用插件请查看 官方文档 https://developers.weixin.qq.com/miniprogram/dev/component/video.html <vide ...

  7. html5 audio js控制进度,HTML5 audio标签使用js进行播放控制实例

    标签可以在html5浏览器中播放音频文件. 默认提供一个控制面板,但是有些时候我们只需要播放声音,控制面板由我们自己来定义其显示的状态. 这里我们可以使用js来进行控制,代码如下: 复制代码代码如下: ...

  8. html5 音乐播放进度条,js实现音乐播放控制条

    前言 html5中提供audio标签, 该标签实现音频的播放,之前就一直对于音频以及视频播放比较感兴趣,一直想要自己实现一个音频和视频播放的模块,这也是本文章撰写的初衷,最近花了些时间实现了Audio ...

  9. Javascript控制html5 Audio标签

    Javascript控制html5 Audio标签 9 Replies 在上一篇文章:Html5 audio标签(属性)的使用详解中已经把关于audio标签的如何使用以及支持属性说清楚了.这里写篇文章 ...

最新文章

  1. 表格td超出部分隐藏,显示...
  2. Origami – 用于 Quartz 的免费的交互设计框架
  3. 11.cadence.通孔类封装创建[原创]
  4. 1-100以内的数求和,求出当和第一次大于20的当前数
  5. django11:自动序列化/批量插入数据/分页器
  6. oracle客户端中文乱码问题的解决
  7. 统计通话次数和时间的软件_通话时间统计app下载|通话时间统计安卓版下载 v1.0.3 - 跑跑车安卓网...
  8. OpenCV中的随机数
  9. centos 测试get请求_11-CentOS7服务器搭建-ab压力测试
  10. Java实现动画逐字打印
  11. System Center 2016 Data Protection Manager 部署手册
  12. LeetCode.83. Remove Duplicates from Sorted List(删除单链表中的重复元素)
  13. 数据库索引是什么,它的作用是什么?
  14. 工业镜头视场、倍率、焦距之间的关系
  15. 字符串str.format()方法
  16. 做好数据全生命周期管理,实现数据资产化
  17. css3扭蛋机,微信小程序 扭蛋抽奖机CSS3动画实现详解_咋地 _前端开发者
  18. MySQL:使用NavicatIP远程连接失败,提示“is not allowed to connect to this MySql server”
  19. 【detectron】绘制loss曲线和pr曲线
  20. 科技云报道:华为云数据灾备,守护企业的生命线

热门文章

  1. yolov5 继续训练
  2. 如何最快恢复逻辑备份
  3. Golang【sgg】
  4. 博弈论 Nim游戏与SG函数
  5. 解密中国互联网企业创始人,程序员打下半壁江山
  6. swing重写右上角叉号
  7. 移动双臂机器人仿真[0]--概述
  8. react-native系列(13)动画篇:Animated动画库和LayoutAnimation布局动画详解
  9. python批量采集欢乐之源——表情包数据~
  10. (实测可用)STM32CubeMX教程-STM32L431RCT6开发板研究(RTC-DS1302时钟)