当前位置: 首页 > Web前端 > HTML5

直播几种视频格式的概念总结

时间:2023-04-05 23:01:16 HTML5

因为业务需要,这段时间一直在准备做一个新的HTML5播放器,涉及到一些底层的视频知识。这段时间到处找,了解了一些相关资料。先做阶段性总结。MPEGMPEG(MovingPictureExpertsGroup,运动图像专家组)是ISO(InternationalStandardizationOrganization,国际标准化组织)和IEC(InternationalElectrotechnicalCommission,国际电工委员会)于1988年成立的组织,旨在制定运动图像和声音的国际标准压缩。组织。这一段是我直接从百度百科贴过来的官方解释。综上所述,这是一个制定视频和音频通用标准的组织。因为需要播放器正确识别和播放各种视频,所以需要视频和音频的拷贝。行业标准格式。我还找到了一个非常明确和简单的答案。一般来说,每制定一个版本的白皮书,就是一次技术创新。例如,MPEG1是一开始为VCD制定的音频压缩标准(我们熟悉的最近逐渐被废弃的mp3格式指的是MPEG-1audiolayer3)。MPEG2开始为DVD制定视频+音频压缩标准。视频实际上可以被认为是一系列的图片帧。比如压缩后的jpg图片大小为100KB。对于每秒24帧的1分钟视频,一个视频的大小可能是100KB*24*60≈14G,所以肯定不是。MPEG2协议中定义了一些行业视频压缩标准。事实上,MPEG3不同于mp3。最初,MPEG3是为HDTV广播视频开发的协议。但由于MPEG-2的优良性能,可以应用于HDTV。MPEG-3原本是为HDTV设计的,还没诞生就被拒绝了。弃。后来随着手机的出现,因为手机的存储容量有限,所以需要更高的压缩率。比如一张DVD的存储容量是4GB,而手机只有1G。这时,经过一些算法专家的努力,慢慢的就会有MPEG4协议的制定。MPEG4协议采用了更先进的压缩算法,其压缩比将高于MPEG2。Container容器指的是视频的格式,包括.mp4、.mov、.wmv、.m3u8、.flv等。作为容器,容器主要包含视频数据、音频数据和元数据(用于检索信息如视频负载格式)。CodecCOmpress和DECompress是指视频和音频的压缩方式,包括H.265/MPEG-HHEVC、H.264/MPEG-4AVC、H.263/MPEG-4Part2、H.262/MPEG-2等。.它可以分为帧内编解码器和帧间编解码器。其中H.264/AVC,也称为MPEG-4AdvancedVideoCoding(AVC),将成为MPEG-4标准的part10(MPEG协议有很多部分,压缩方式就是其中之一.还有定义视频文件结构标准等的部分)。是目前业界普遍采用的视频压缩方式。MediaSourceExtension浏览器新提供了一个API,用于通过JavaScript生成媒体流进行播放。通过window.URL.createObjectURL(MediaSource)接口,可以在浏览器端生成可播放的blob链接,设置为视频标签HLSvs.RTMP。基本上可以链接到我之前的文章,就是常用的两种直播传输协议。其中HLS协议的直播视频格式为m3u8,RTMP的格式为flv。m3u8文件上面的两张图,左图是一个普通的m3u8文件打开的内容,其实m3u8文件是纯文本,可以直接用记事本打开,它是一个视频描述文件,里面描述了每一个.ts文件分片地址(或相对地址)、时长、hls协议版本信息。右图是一个可以适配多种码率的m3u8描述文件,可以根据不同的带宽选择不同的m3u8地址。其中ts文件才是真正的视频数据。上图ts文件是我在网上找到的ts文件的详细文件结构。一个ts文件在传输过程中以188byte的数据包进行传输,每个数据包包含一个header和payload。包头中有不同的字段,用于描述视频信息的位置和有效载荷。payload即载荷,即视频信息,是通信领域的专用名词。具体的文件结构分析打算在下一篇关于m3u8文件的详细文章中介绍。Fragmentedmp4,也称为fmp4,是一种适应现代浏览器的流媒体格式。与mp4格式不同的是,之前的mp4格式也分为header信息和payload信息。大的mp4会有很大的头信息,不适合现在的网络环境。于是新的fmp4格式出现了。fmp4格式有一个带有元数据的标头片段,以及后面的一系列片段。每个分片都有自己的头信息,这样头信息也被分成小的分片,更适合当前的应用场景。因此,fmp4格式也是用于MediaSource对象的SourceBuffer的格式,通过一个initSegment和一系列片段馈送到MediaSource对象进行播放。