什么是视频容器?视频文件的扩展名就是视频的容器名。比如“avi文件”或者“mp4文件,avi和mp4只是容器格式。好比zip文件,里面可以包含各种文件,视频容器格式只是定义了怎么存储数据,而不论存储什么类型的数据。不过视频容器格式比这个更复杂一些,因为不是所有的视频流格式兼容所有的视频容器格式。
一个视频文件一般包含多个track,而每个视频track(没有音频)又可对应一到多个音频track。这些track又总是相互关联的。每个音频track内部包含标记用于和视频同步。每个track可包括元数据,比如视频track的纵横比(视频长和宽),或者音频track的语言。容器也可以有元数据,比如视频自身的题目,视频的封面,片段号码(用于在电视上展示)等等。
常见的容器格式:
①AVI(Audio Video Interleave):比较早的AVI是Microsoft开发的。其含义是Audio Video Interactive,就是把视频和音频编码混合在一起存储。AVI也是最长寿的格式,已存在10余年了,虽然发布过改版(V2.0于1996年发布),但已显老态。AVI格式上限制比较多,只能有一个视频轨道和一个音频轨道(现在有非标准插件可加入最多两个音频轨道),还可以有一些附加轨道,如文字等。AVI格式不提供任何控制功能。扩展名:avi
②WMV(Windows Media Video)是微软公司开发的一组数字视频编解码格式的通称,ASF(Advanced Systems Format)是其封装格式。ASF封装的WMV档具有“数字版权保护”功能。扩展名:wmv/asf、wmvhd
③MPEG格式:MPEG(Moving Picture Experts Group),是一个国际标准化组织(ISO)认可的媒体封装形式,受到大部份机器的支持。其存储方式多样,可以适应不同的应用环境。MPEG-4档的档容器格式在Part 1(mux)、14(asp)、15(avc)等中规定。MPEG的控制功能丰富,可以有多个视频(即角度)、音轨、字幕(位图字幕)等等。MPEG的一个简化版本3GP还广泛的用于准3G手机上。扩展名:dat(用于VCD)、vob、mpg/mpeg、3gp/3g2(用于手机)等
④Matroska是一种新的多媒体封装格式,这个封装格式可把多种不同编码的视频及16条或以上不同格式的音频和语言不同的字幕封装到一个Matroska Media档内。它也是其中一种开放源代码的多媒体封装格式。Matroska同时还可以提供非常好的交互功能,而且比MPEG的方便、强大。扩展名:mkv
⑤Real Audio或者称Real Media(RM)档是由RealNetworks开发的一种档容器。它通常只能容纳Real Video和Real Audio编码的媒体。该档带有一定的交互功能,允许编写脚本以控制播放。RM,尤其是可变比特率的RMVB格式,没有复杂的Profile/Level,制作起来较H.264视频格式简单,非常受到网络上传者的欢迎。此外很多人仍有RMVB体积小高质量的错误认知,这个不完全正确的观念也影响很多人只收rmvb,事实上在相同码率下,rmvb编码相较H.264这个高度压缩的先进视频编码,体积较大。扩展名:rm/rmvb
⑥Quick Time file service是由苹果公司开发的容器。1998年2月11日,国际标准组织(ISO)认可QuickTime文件格式作为MPEG-4标准的基础。QT可存储的内容相当丰富,除了视频、音频以外还可支持图片、文字(文本字幕)等。扩展名:mov、qt
⑦OggMedia是一个完全开放性的多媒体系统计划,OGM(Ogg Media File)是其容器格式。OGM可以支持多视频、音频、字幕(文本字幕)等多种轨道。扩展名:ogg
⑧MOD格式是JVC生产的硬盘摄录机所采用的存储格式名称。
什么是视频编解码器呢?原始的视频容器非常大,添加需编码,播放需解码。音频编解码器包括:AAC、MPEG-3、OggVorbis.视频编解码器包括:H.264、VP8、OggTheora.
了解了以上概念之后,我们再来学习html5中的音频和视频。首先我们先要了解以下这几个标签-->
audio | 音频 |
video | 视频 |
source | 加载的音频和视频的资源 |
<span style="font-size:18px;"><audio src="johann_sebastian_bach_air.mp3"></audio>
<video src='Intermission-Walk-in.ogv'></video>
<video>
<source src='Intermission-Walk-in_512kb.mp4'></source>
</span><pre name="code" class="html"><span style="font-size:18px;"><source src='Intermission-Walk-in.ogv'></source></span>
</video>
当我们向页面插上这些音频视频的标签之后,会发现页面上没有音频文件,视频文件也无法播放,这是什么原因呢?这些因为我们少了一些媒体元素,下面是一些媒体元素的列表:
controls | 显示或隐藏用户控制界面 |
autoplay | 媒体是否自动播放 |
loop | 媒体是否循环播放 |
currentTime | 开始到播放现在所用的时间 |
duration | 媒体总时间(只读) |
volume | 0.0-1.0的音量相对值 |
muted | 是否静音 |
autobuffer | 开始的时候是否缓冲加载,autoplay的时候,忽略此属性 |
paused | 媒体是否暂停(只读) |
ended | 媒体是否播放完毕(只读) |
error | 媒体发生错误的时候,返回错误代码 (只读) |
currentSrc | 以字符串的形式返回媒体地址(只读) |
play() | 媒体播放 |
pause() | 媒体暂停 |
load() | : 重新加载媒体 |
loadstart
, progress ,
suspend emptied ,stalled , play , pause
loadedmetadata ,
loadeddata
, waiting playing,
canplay
,canplaythrough
seeking ,
seeked
time,update,
ended
ratechange
,durationchange,
volumechange
|
当然除了这些,视频还有一些额外的特性,
poster | 视频播放前的预览图片 |
width、height | 设置视频的尺寸 |
videoWidth,videoHeight | : 视频的实际尺寸(只读) |