
FFmpeg
文章平均质量分 77
音视频开发
canger_
Linux C/C++、golang、云原生
展开
-
FFmpeg中的pts、dts、time_base与AVRational
PTSPresentation Time Stamp。PTS主要用于度量解码后的视频帧什么时候被显示出来DTSDecode Time Stamp。DTS主要是标识读入内存中的bit流在什么时候开始送入解码器中进行解码time_base也就是pts反映帧什么时候开始显示,dts反映数据流什么时候开始解码怎么理解这里的“什么时候”呢?如果有某一帧,假设它是第10秒开始显示。那么它的pts是多少呢。是10?还是10s?还是两者都不是。为了回答这个问题,先引入FFmpeg中时间基的概念,也就是time原创 2021-05-19 00:16:44 · 1003 阅读 · 0 评论 -
I帧、P帧、B帧
I帧、P帧、B帧简单地说,I帧是关键帧,属于帧内压缩。就是和AVI的压缩是一样的。P是向前搜索的意思。B是双向搜索。他们都是基于I帧来压缩数据。I帧表示***关键帧***,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比原创 2021-05-16 00:37:22 · 9280 阅读 · 0 评论 -
FFmpeg Muxing流程
介绍FFmpeg的Muxing主要分为三步操作:avformat_write_header : 写文件头av_write_frame/av_interleaved_write_frame: 写packetav_write_trailer : 写文件尾1、av_format_write_head/** * Allocate the stream private data and write the stream header to * an output media file. * .原创 2021-05-16 00:34:45 · 1460 阅读 · 4 评论 -
FFmpeg源代码结构图-解码
参考雷神的博客以及4.0版本FFmpeg的改动 https://blog.youkuaiyun.com/leixiaohua1020/article/details/44220151解码流程:1、av_register_all(现在4.0以上的ffmpeg不需要这个了):先调用avcodec_register_all来注册所有config.h里面开放的编解码器,然后会注册所有的Muxer和Demuxer(也就是封装格式),最后注册所有的Protocol(即协议层的东西)2、avformat_allo.原创 2021-05-16 00:33:11 · 273 阅读 · 2 评论