ffplay播放器原理学习
Posted 道亦无名
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ffplay播放器原理学习相关的知识,希望对你有一定的参考价值。
ffplay 播放器从原理上来讲和 windows directshow 差不多,只是没有使用 driectshow 那些名词术语来表述。从 directshow 的视角来看 ffplay 播放器,简单的划分一下模块和各个模块的文件,有些文件可能在多个模块中都有用到,只能不严格的划分。
Source filter
Source filter 读文件模块,可以简单的分为 3 层,最底层的是 file,pipe,tcp,udp,http 等这些具体的本地文件或网络协议(注意 ffplay 把 file 也当协议看待);中间抽象层用 URLContext 结构来统一表示底层具体的本地文件或网络协议,相关操作也只是简单的中转一下调用底层具体文件或协议的支撑函数;最上层用 ByteIOContext 结构来扩展 URLProtocol 结构成内部有缓冲机制的广泛意义上的文件,并且仅仅由 ByteIOContext 对模块外提供服务。此模块主要有 libavformat 目录下的 file.c,avio.h, avio.c, aviobuf.c 等文件,实现读媒体文件功能。
Demux filter
Demux filter 解复用模块,可以简单的分为两层,底层是 AVIContext,TCPContext,UDPContext 等等这些具体媒体的解复用结构和相关的基础程序,上层是 AVInputFormat 结构和相关的程序。上下层之间由 AVInputFormat相对应的 AVFormatContext 结构的 priv_data 字段关联 AVIContext 或 TCPContext 或 UDPContext 等等具体的文件格式。AVInputFormat和具体的音视频编码算法格式由AVFormatContex
以上是关于ffplay播放器原理学习的主要内容,如果未能解决你的问题,请参考以下文章