FFplay 播放器

  Ffplay播放器原理:

    ffplay可以分为多个模块文件;

   Source filter  读文件模块可以分为3层;最底层的是file 、pipe、tcp、udp、http等具体的本体文件或网络协议;(ffplay把file当做协议);中间抽象层用URLContext结构来统一表示底层具体的本地文件或网络协议,相关操作只是简单地中转一下调用底层具体文件或协议支撑函数;最上层AVIOContext(早期ByteIoContext)结构体来扩展URLProfile结构成内部有缓冲机制的广泛意义上的文件,并且由AVIOContext对模块外提供服务;从模块主要在libavformat目录下的file.c avio.h avio.c aviobuf.c等文件;

   Demux filter解复用模块;底层是AVIContext TCPContxt UDPContext 等具体的媒体的解复用结构和相关的基础程序;上层是AVInputFormat结构和相关层序;上下层之间由AVInputFormat相对应的AVFormatContext结构的Priv_data字段关联AVIcontext或TCPcontext、udpcontext等具体文件的格式;AVInputFormat和具体的音视频编码算法格式由AVFormatContext 结构的streams字段关联的媒体格式;解复用模块分离音视频裸数据通过streams传递给下级音视频解码器;此模块主要有libavformat目录下的avidec.c utils_format.c 文件。

   Decoder filter 解码模块,简单分为两层,由AVCodec统一表述,上层是AVCodec对应的AVCodecContext结构相关的基础程序,底层是TSContext、MsrleContext等这些具体编解码器内部使用的结构和相关程序。AVCodecContext结构体的priv_data字段关联TSContext、MsrleContext等等具体解码器上下文。此模块主要有libavcodec目录下的msrle.c trueseech.c truespeech_data.h utils_codec.c deng等文件。FFplay 播放器_第1张图片


你可能感兴趣的:(ffmpeg)