什么是视频容器?视频文件的扩展名就是视频的容器名。比如“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媒体总时间(只读)volume0.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 之前引入的视频音频标签在浏览器中无法播放,当标签内部加入controls这个属性之后,音频视频就可以正常播放了。
当然除了这些,视频还有一些额外的特性,
poster视频播放前的预览图片width、height 设置视频的尺寸videoWidth,videoHeight: 视频的实际尺寸(只读) 通过以上的一些知识点,我们可以做很多有趣的东西,比如像360音乐导航,视频与canvas结合,自制的视频播放器等等。后续可能会用这些知识点做一些很有趣的东西。