编解码、流、文件等相关概念

转自http://www.cnblogs.com/arccosxy/p/3478724.html

codec:表示编解码,CODEC = Code + Decode 

使用codec的原因:由于视频文件很大,所以需要进行压缩(code)它,再存储起来,要播放的时候进行解压缩(decode),这个就是牺牲时间来换很大的空间。

编码器作用: 原视频文件(很大) --> 编码器 --> 编码后的视频文件
解码器作用: 编码后视频文件(相对小) -> 解码器 --> 原视频文件(大)
 

 

Container:表示一个文件(格式),如.flv与.mkv是两种不同的容器 

 

flv包含两种stream,一种是音频流,另一种是视频流
mkv的话包含3种流:音频流、视频流 和 字幕流

 

demux/mux:解复用/复用

 

demux:使用解复用器(demuxer)将不同的流按照某种文件的规则从那文件中解析出来

mux:使用复用器(muxer)将不同的流按照某种文件的规则放入容器(生成了某种文件)

 

每个不同的容器都有不同的规则来整合流,常见的容器有.mkv、.rm、.flv、.mp4等,那么针对不同容器,就应该有不同的demuxer来进行demux操作了

 

Packets:它包含了一段可以被解码成最后操作的原始帧的数据。

 

每个包包含完整的帧或对于音频来说是许多格式的完整帧。(此处本人纠正一下,包里面也有可能不是完整的帧,例如可能帧结尾在下一个包里)

 

Frame:一帧相当于1张图片(encoder),一般视频1s包含25帧

 

那么这样就比较清晰:我们需要得到容器中的音频流,找出里面的帧,使用解码器(decoder)将帧还原,然后再去播放,也可以再使用另一个编码器(encoder)压缩成另一种格式的帧(这个就是所谓的格式转换)

posted @ 2014-04-18 16:22  youngt  阅读(372)  评论(0编辑  收藏  举报