zoukankan      html  css  js  c++  java
  • 编解码、流、文件等相关概念

    转自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)压缩成另一种格式的帧(这个就是所谓的格式转换)

  • 相关阅读:
    C# 关键字 virtual、override和new的用法
    架构技术及架构要素总结【转】
    vue文件目录结构
    vue项目中,如何对static文件夹下的静态文件添加时间戳,以达到清除缓存
    webpack中关于require与import的区别
    vue 根据下拉框动态切换form的rule
    el-select 根据value查询其对应的label值
    web前端项目规范
    JavaScript 编码规范
    HTML 编码规范
  • 原文地址:https://www.cnblogs.com/youngt/p/3673517.html
Copyright © 2011-2022 走看看