FFMpeg学习总结

参考:  http://blog.csdn.net/yang_xian521/article/details/7697324

http://blog.csdn.net/leixiaohua1020/article/details/11693997

http://blog.csdn.net/leixiaohua1020/article/details/14214705

 

http://my.oschina.net/u/555701/blog/56616

http://my.oschina.net/u/555701/blog?catalog=175975

http://blog.csdn.net/kidleaf2/article/category/1171659

http://guoh.org/lifelog/2013/10/h-264-bit-stream-sps-pps-idr-nalu/


http://blog.csdn.net/tx3344/article/category/1234994   ffmpeg完美入门系列

http://blog.csdn.net/woshinia/article/category/1270366 ffmpeg架构

http://wenku.baidu.com/view/d481f1345a8102d276a22feb.html   mpeg-TS 分析

VLC 架构:
http://wenku.baidu.com/view/8f155b252f60ddccda38a04f.html


常用概念:

IPTV    Internet Protocol Television
VOD        Video on Demand  视频点播,一种可以按用户需要点播节目的交互式视频系统
RTP        Real time Transport Protocol
RTSP    Real time Streaming Protocol
dts        表示解码时间戳,(英文: decompression time stamp in time_base units)
pts        表示显示时间戳(英文: presentation time stamp in time_base units)
Conainer/File    容器/文件,即特定格式的多媒体文件。
Stream            媒体流:指时间轴上的一段连续数据,如一段声音数据,一段视频数据或一段字幕数据,可以是压缩的,也可以是非压缩的,压缩的数据需要关联特定的编解码器。
Frame/Packet    数据帧/数据包:通常,一个媒体流由大量的数据帧组成,对于压缩数据,帧对应着编解码器的最小处理单元。通常,分属于不同媒体流的数据帧交错复用于容器之中。
decode/encode     编解码器:编解码器以帧为单位实现压缩数据和原始数据之间的相互转换。
subtitle 字幕
demux       解复用
mux         复用
GOP         MPEG-2视频通常包含多个GOP(GroupOf Pictures),每一个GOP包含多个帧(frame)。帧的帧类(frame type)通常包括I-帧(I-frame)、P-帧(P-frame)和B-帧(B-frame)。其中I-帧采用帧内编码,P-帧采用前向估计,B- 帧采用双向估计。
            I帧编码是为了减少空间域冗余,P帧和B帧是为了减少时间域冗余。
            GOP是由固定模式的一系列I帧、P帧、B帧组成。常用的结构由15个帧组成,具有以下形式 IBBPBBPBBPBBPBB。GOP中各个帧的比例的选取和带宽、图像的质量要求有一定关系。
            例如因为B帧的压缩时间可能是I帧的三倍,所以对于计算 能力不强的某些实时系统,可能需要减少B帧的比例。
RSS: "Resident Set Size", 实际驻留"在内存中"的内存数(单位: KB). 不包括已经交换出去的代码. 举一个例子: 如果你有一个程序使用了100K内存, 操作系统交换出40K内存, 那么RSS为60K. RSS还包括了与其它进程共享的内存区域. 这些区域通常用于libc库等.
SHARE: RSS中与其它进程共享的内存部分大小.
VMSIZE: 一个进程占用的总的地址空间大小. 它包括了没有映射到内存中的页面。
sz(Private RSS): 映射到内存中的页面, 这些页面仅由进程单独使用. 这也是我们最关心地方: 进程实际占用的内存数。
FFWD     向前trick
RWD     重头播放
PVR        就是录像
PSI        Program Specific Information,意为节目专用信息
HLS        apple上面的一种协议,和RTP/RTCP协议类似。支持自适应码率传输(如果当前网络不好,就低码率传输数据; 如果当前网络恢复了,就高码率传输数据)
DRM       英文全称Digital Rights Management, 可以翻译为:内容数字版权加密保护技术            

AV_TIME_BASE    微秒
MP3的ID3元数据标签
STB 机顶盒
adaption field  调整字段
PAT       节目关联表
PMT        
minGW  Minimalist GNU for Windows
1s = 1000ms = 1000 000 μs

多媒体文件/多媒体流 (movie.mkv)
  原始流 1  (h.264 video)
  原始流 2  (aac audio for Chinese)
  原始流 3  (aac audio for english)
  原始流 4  (Chinese Subtitle)
  原始流 5  (English Subtitle)


动态库的作用:

libavcodec :这是一个用于多个项目中音频和视频的编解码器库

libavformat:一个音频与视频格式转换库

libswscale: 对于图像作缩放的库

libavutil:包含一些工具库

libpostproc: 对于视频做前处理的库

FFMPEG中结构体

FFMPEG中结构体很多。最关键的结构体可以分成以下几类:

a)        解协议(http,rtsp,rtmp,mms)

AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议的类型以及状态。URLProtocol存储输入视音频使用的封装格式。每种协议都对应一个URLProtocol结构。(注意:FFMPEG中文件也被当做一种协议“file”)

b)        解封装(flv,avi,rmvb,mp4)

AVFormatContext主要存储视音频封装格式中包含的信息;AVInputFormat存储输入视音频使用的封装格式。每种视音频封装格式都对应一个AVInputFormat 结构。

c)        解码(h264,mpeg2,aac,mp3)

每个AVStream存储一个视频/音频流的相关数据;每个AVStream对应一个AVCodecContext,存储该视频/音频流使用解码方式的相关数据;每个AVCodecContext中对应一个AVCodec,包含该视频/音频对应的解码器。每种解码器都对应一个AVCodec结构。

d) 存数据

视频的话,每个结构一般是存一帧;音频可能有好几帧

解码前数据:AVPacket

解码后数据:AVFrame


他们之间的对应关系如下所示:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值