那是我在夕阳下的奔跑:边跑边学习html5之audio与video

今天为大家分享一下html5中的视频(video)与音频(audio)。在进入主题之前我们先了解一下Flash与html5这两种技术的时代背景与发展历史。

1.前言

Flash被退休与html5的上位



Flash这项技术诞生于20多年前,曾被应用于98%的个人电脑上,是开发者最青睐的软件之一,被用于开发游戏、视频播放器和可在多个网络浏览器上运行的应用。Falsh的前半生可以说是辉煌的,在Flash最为鼎盛的时期,来自Adobe的官方统计,全球有将近200万的Flash开发者。

但它仅仅是满足了人们的短期需求,它没有预见移动设备革命的到来。业界现在普遍认为,Flash的下坡路是从和苹果的决裂开始的。尤其是乔布斯在2010年发布的一篇《thoughts-on-flash》的文章。乔布斯在里面写下了关于Flash的一点看法,说明自己为什么不使用Flash,谈到关于Flash的一些问题,比如开放性,安全性,对于设备续航的影响,不利于触摸屏,等等。自此之后,这种技术的热度开始下降,HTML5等其他技术已经逐步取代了Flash。在现下最普及的网页浏览器Chrome上,Flash的使用率急剧下降。据谷歌称,2014年80%的桌面用户每天使用Flash播放器,而目前只有17%。终于,于2017年7月25日,Adobe爸爸也放弃治疗了,宣布flash将于2020年正式退休。

HTML5是HTML的最新版本,它扩大了可以嵌入在网页中的多媒体元素的列表。HTML5支持可扩展矢量图形(SVG)的多媒体特定标签、动画和使用CANVAS元素,级联样式表(CSS)和Java的音频和视频的交互性。HTML5无需第三方插件(例如插件和API),以便通过在文档文本本身中嵌入代码来运行内容。这解决了以前的迭代发现的兼容性问题,其中需要第三方插件或专有API来正确呈现HTML文档。

作为现在可以支持Flash类技术的开源语言,HTML5已经成为Web开发的新首选。所谓长江后浪推前浪,一代更比一代浪。html5可以说是站在Flash这个巨人的肩膀上,Flash留给html5大量的遗产,尤其是很多HTML5相关的视频和音频项目在过去几年的发展中大量的融合了Flash相关的媒体库来提供更多的功能支持,当今大量的HTML5 Video Player都是从原来的Flash领域变换而来。这一切都是Flash技术带给当今HTML5领域的财富。在拥抱新技术的同时,也感谢flash对互联网带来的深远影响。

废话不多说,下面一起进入正题。

2.audio与video

2.1 标签
标签主要包括<audio>、<video>、<source>.
<audio src="×××.mp3" controls autoplay></audio>
<video src="./GameOfThrones.rmvb" controls autoplay></video>

<video controls autoplay>
    <source src="./GameOfThrones.rmvb">
</video>

2.2 视频容器
不论是音频文件还是视频文件,实际上都只是一个容器文件,这点类似于压缩了一组文件的ZIP文件。视频文件(视频容器)包含了音频轨道、视频轨道和其他一些元数据。视频播放的时候,音频轨道和视频轨道是绑定在一起的。元数据部分包含了该视频的封面、标题、子标题、字幕等相关信息。主流的视频容器支持的格式包括:.avi,.flv,.mp4,.ogv等。

2.3 编解码器
音频和视频的编解码器是一种算法,能够对特定格式的音频和视频文件进行编码和解码,使其在浏览器中能够快速的加载与解析。极大的减少了用户的等待时间,提升了用户体验。常见的音频编解码器有AAC、MPEG-3、Ogg Vorbis,视频编解码器包括H.264、VP8、Ogg Theora。

2.4 媒体元素
video/audio标签属性包括:
autoplay:控制是否自动播放;
controls: 控制是否显示播放控件;
loop : 媒体是否循环播放;
muted:规定视频输出应该被静音;
preload:在页面加载时进行加载,并预备播放;
src:要加载的资源文件。
其中video还有几个特殊的标签属性
poster : 视频播放前的预览图片;
width、height : 设置视频的尺寸;
videoWidth、 videoHeight : 视频的实际尺寸(只读)。

2.5 js中的audio与video
(1)创建

var ov = document.createElment(‘video‘) // 直接new 一个对象,参数为src。
var oa = new Audio(‘http://www.baidu.com/test.mp3‘)

(2)获取

与常规的dom节点获取没有区别。

(3)属性和方法

(4)事件

2.6 浏览器的支持情况
从下表可以看出浏览器对媒体元素的支持情况。

audio
Firefox:支持 Ogg Vorbis和WAV   
Opera :支持Ogg Vorbis和WAV   
Safari :支持MP3,AAC格式 ,和MP4   
Chrome :支持Ogg Vorbis,MP3,WAV,AAC和MP4   
Internet Explorer 9+ :支持MP3,AAC格式 ,和MP4   
IOS :支持MP3,AAC格式,和MP4
Android :支持AAC和MP3
video
Firefox:支持Ogg Theora格式和WEBM
Opera:支持Ogg Theora格式和WEBM
Safari:支持MP4
Chrome:支持Ogg Theora格式,MP4和WEBM
Internet Explorer 9:支持MP4和WEBM(需要安装插件)
IOS:支持MP4
Android:支持MP4和WEBM(Android 2.3版本以上)
为了最大程度支持所有上面提到的浏览器,建议开发者使用Ogg Vorbis和MP3这两种音频格式,使用WEBM和MP4作为视频文件的格式并将资源加载在source标签中。
例如:

<audio autoplay controls>
    <source src="./×××.ogv">
    <source src="./×××.mp3">
</audio>
<video autoplay controls>
    <source src="./×××.webm">
    <source src="./×××.mp4">
</video>

与直接在视频或音频标签中写src相比,使用source标签加载资源的好处是,当浏览器无法解析第一种视频或音频的格式时,将会解析第二种格式,可以加载多个source。

3.demo

介绍了那么多,最后分享我通过媒体元素的一些属性和方法做的一个自定义多媒体播放器,代码地址:自定义彬彬播放器,代码地址:自定义播放器源码

-----------------------------------------我是分割线君-----------------------------------------------

最后,擎创公司官网已经上线,小伙伴们请有兴趣的可以看看。官网地址:www.eoitek.com

原文地址:https://www.cnblogs.com/homehtml/p/12210972.html

时间: 2024-11-14 19:10:07

那是我在夕阳下的奔跑:边跑边学习html5之audio与video的相关文章

如何在Windows下用cpu模式跑通py-faster-rcnn 的demo.py

关键字:Windows.cpu模式.Python.faster-rcnn.demo.py 声明:本篇blog暂时未经二次实践验证,主要以本人第一次配置过程的经验写成.计划在7月底回家去电脑城借台机子试试验证步骤的正确性,本blog将根据实际遇到的问题持续更新.另外blog中除提到的下载链接外我还会给出网盘链接方便下载,包括我的整个工程的网盘链接.如果有些报错解决不了可直接拿本人的相关文件替换,本篇blog具有较高的参考性. 本人微软版caffe工程     下载链接:http://pan.bai

大数据下基于Tensorflow框架的深度学习示例教程

近几年,信息时代的快速发展产生了海量数据,诞生了无数前沿的大数据技术与应用.在当今大数据时代的产业界,商业决策日益基于数据的分析作出.当数据膨胀到一定规模时,基于机器学习对海量复杂数据的分析更能产生较好的价值,而深度学习在大数据场景下更能揭示数据内部的逻辑关系.本文就以大数据作为场景,通过自底向上的教程详述在大数据架构体系中如何应用深度学习这一技术.大数据架构中采用的是hadoop系统以及Kerberos安全认证,深度学习采用的是分布式的Tensorflow架构,hadoop解决了大数据的存储问

124第六章——在图形化界面下对磁盘进行常规管理 学习笔记

MBR:主引导扇区,在驱动器最前端的一段引导扇区,大小为512B(字节),由三部分组成,第一部分为主引导程序(boot loader),大小为446B,第二部分为分区表(partition table区),大小为64B,第三部分为magic number,大小为2B,固定为55AA.因为在分区表上记录一个主分区需要使用16B,所以整个硬盘的主分区和扩展分区最多只能是4个,不过在扩展分区上可以创建逻辑分区.Windows的系统文件必选安装在主分区上. 应用程序→系统工具→磁盘实用工具 124第六章

2017-2018 20172309 《程序设计与数据结构(下)》第七章学习总结

2017-2018 20172309 <程序设计与数据结构(下)>第七章学习总结 一.教材学习内容总结 1.1关于二叉查找树的一些概念 二叉查找树具有附加属性,其左孩子小于父节点.而父节点又小余或者等于右结点. 因此二叉查找树的最右侧会存放最大元素.而其最左侧会存放最小元素. 二叉查找树是二叉树的扩展,它绝大数方法都会用到递归,二叉查找树的平均查找深度为O(log2N). 1.2实现二叉查找树 添加元素(addElement操作) 插入方法首先在插入的时候判断被插入元素的类型是不是Compar

linux 下如何查看mysql跑了哪些服务

ps -ef|grep  mysql   //现查处PID 然后 lsof -p +pid  就可以看到mysql跑的服务 百度出了别人的方法 当遇到mysql很卡,然后又想知道找到原因时,我常用以下方法找问题 show processlist\G;  或者show full processlist\G;    //放这个命令进去提示没有这个命令 *************************** 5. row *************************** Id: 197343 U

关于 Poco::TCPServer框架 (windows 下使用的是 select模型) 学习笔记.

说明 为何要写这篇文章 ,之前看过阿二的梦想船的<Poco::TCPServer框架解析> http://www.cppblog.com/richbirdandy/archive/2010/09/10/123994.html 无奈代码太多,看起繁琐.所以 准备 以流程图简化,便于理解.也方便自己以后使用. 本文内容 是基于window api分析的. 本文的poco是1.4.6p4 (2014-04-18)版本的. 虽然现在poco版本是1.6 但调用改动不大. poco下载地址:http:/

迅为4412开发板学习之win8下基础软件的安装和学习

平台:迅为4412开发板 详情了解:http://topeetboard.com更多了解:https://arm-board.taobao.com 一.超级终端的安装和使用 1 关闭 win8 的自动更新 如果用户使用的 PC 机没有串口,就需要用到 USB转串口驱动.我们给用户配套的硬件是 PL 2303, 提供的驱动也是 PL2303. 如果用户使用其它的设备, 那么所需要的驱动就不一样了. 本来驱动安装后直接使用,但是在 win8 下有自动更新,默认自动更新的,它会更新到最 新的版本,最新

Linux下TCP的keepalive相关参数学习

一 基本原理 TCP的Keepalive可以简单理解成为keep tcp alive,用来检测TCP sockets的连接是否正常或是已经断开. Keeplived的原理很简单,当建立一个TCP连接时,发送端就会创建一些计时器,其中一些计时器就是处理keeplaive相关问题的.当keepalive的计时器计数到0时,发送端就会向对端发送一些不含数据的keepalive数据包并开启ACK标志.如果得到keepalive探测包的回复,就可以认为当前的TCP连接正常,不用担心用户层面的具体实现.事实

微服务架构下业务单机QPS跑不上去应从哪些角度分析

这是做应用运维老生常谈的一个事儿,经常做,今天把他总结一下. 不管什么性质的业务,吞吐量的本质是木桶原理,能跑多大量取决于木桶最短的那个板,脑袋里是不是立刻可以出现木桶的那个模型,哈哈!!换句话说,当有能力提高短板的高度时,业务的吞吐量就会有所上升,但同样有个边际效应,经过多次的优化后,当再次提高短板的成本非常非常大,而付出后提高的量很低时,那就不要较劲了,直接加服务器吧. 言归正传,先解释一下单机QPS跑不上去的现象,具体表现就是高过一个点后错误率增加.时延增大,很显然遇到短板了,那么这个短板