1)从Source到Media文件
假设我们已经收集到原始的视频和声音数据(视频/音频源)。直接将这些数据制作成视频文件,别说流媒体传输时候网络压力太大,
即便是你想存到本地硬盘,多数情况下也会放不下,所以我们需要对这些数据进行编码(压缩),此处的编码器(与后面将要提到的解码器结合使用)是我们通常谈论的编解码器,
常用的有用于UHD内容的H.264(AVC)和H.265(HEVC)。
在压缩和处理源之后,我们得到了视频/音频码流。后面有一个Muxing的过程(Muxing是Multiplexing的缩写),该过程包装了生成的视频/音频码流。通常,只将一种类型的视频和音频打包,
但是在某些情况下,也可以打包多个视频/音频码流。
为了包装它们,需要一个东西来容纳视频/音频码流,来把它们装进去,至于具体怎么装,取决于容器的具体规格。不同的容器规格,我们会称之为不同的视频格式。
常见的视频格式包括,
MPEG视频 :mp4
手机视频 :3gp
具体的mp4可以格式参考这里
Muxing的正式定义如下:
Muxing is the process of encapsulating multiple encoded streams – audio, video, and subtitles (if any) – into a container format, such as AVI, Ogg, or Matroska.
通过了Muxing这个操作,我们就得到了可以发布的视频文件了。
2)从Media文件到Source
如果您逆转上面创建媒体文件的过程,那正是播放器所做的。
拿到一个视频文件,第一步就是Demuxing ,Demuxing的定义如下:
Demuxing is the process of reading a multi-part stream and saving each part – audio, video, and subtitles (if any) – as a separate stream。
注意图上的Video/Audio Elements实际上是以流的方式存在的。
在Demuxing过程中。先根据文件的后缀名以特定的方式打开(读取)“容器”,查看其中的内容。
通过分析里面的内容,我们可以找到很多信息,比如此框中包含多少个视频/音频元素(也就是帧数),以及该使用哪种编解码器进行编码已编码的数据流、
准备好的解码器解码。
在Decoding过程中,会那上面提到的解码器解码视频和音频流为原始的视频/音频源数据。