ffmpeg 接收网络流并解码_FFmpeg编程入门系列(1)

本文介绍了FFmpeg播放器框架,包括媒体文件处理、解复用器、音视频解码、帧队列和扬声器显示器的角色。还探讨了FFmpeg的常用库,如AVUtil、AVFormat和AVCodec,以及FFmpeg的关键函数,如avcodec_decode_video2和avcodec_decode_audio4。此外,文章阐述了FFmpeg的数据结构,如AVFormatContext、AVStream和AVCodecContext,以及它们之间的关系。
摘要由CSDN通过智能技术生成

FFmpeg播放器框架

一个完整的播放器框架如下:

媒体文件可以是本地文件,也可以是网络流;

解复用器主要是分离出音视频包。

音视频packet队列:这个是分开设计。为了匹配解复用器之间的速度以及防止网络抖动。

音视频解码:主要是把packet数据变为frame。

音视频frame队列:主要是为了匹配解码和音视频后期处理,播放的速度及防止网络抖动,带来不好的体验,比如卡顿等。

扬声器与显示器:分别是播放声音和渲染视频。

14965505b3977771502001c2096547e3.png

常用音视频术语

容器/文件(Conainer/File):即特定格式的多媒体文件,比如mp4、flv、mkv等。

媒体流(Stream):表示时间轴上的一段连续数据,如一段声音数据、一段视频数据或一段字幕数据,可以是压缩的,也可以是非压缩的,压缩的数据需要关联特定的编解码器(有些码流音频他是纯PCM)。

数据帧/数据包(Frame/Packet):通常,一个媒体流是由大量的数据帧组成的,对于压缩数据,帧对应着编解码器的最小处理单元,分属于不同媒体流的数据帧交错存储于容器之中。

编解码器:编解码器是以帧为单位实现压缩数据和原始数据之间的相互转换的。

复用器:按照一定的规则去组合音频,视频,字幕等。如下图:

07f978ad1f2ba01437547a52e2d209ed.png

解复用器:

按照一定规则去拆分视频流,音频流,字幕流等。

4b0b37d42f09d33f66481a29a0d6d8f4.png

视频编解码器:如下图。

910f4e17be446ae9db474b8fa496c807.png

音频编解码器:如下图

6ba755c238af89d96781bf44b39e929e.png

FFmpeg的整体结构

1c5b049e1d547f627515c41c56310703.png

FFMPEG有8个常用库:

AVUtil:核心工具库,下面的许多其他模块都会依赖该库做一些基本的音视频处理操作。

AVFormat:文件格式和协议库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值