摘要: 自带缓冲区 ffmpeg有自带缓存区,由于不对外暴露,无法很好的控制,经常出现播放花屏问题,当然我们可以修改源码,但通常做法是,忽略ffmpeg本身缓存区,自己实现缓冲队列,通常播放器底层会有两个队列解码队列(压缩数据) 渲染队列(非压缩数据)由于渲染队列通常有3帧左右的缓存就够了,所以当我们计算播 阅读全文
posted @ 2022-07-26 15:08 小超不挑食 阅读(1408) 评论(0) 推荐(1) 编辑
摘要: 介绍 本文在上一篇复用器的使用基础上,将输入文件改为摄像头和麦克风 目前只是单线程 代码如下: 点击查看代码 #include <iostream> #define __STDC_CONSTANT_MACROS //它允许C++程序使用C99标准中指定的 stdint.h 宏,而这些宏不在C++标准 阅读全文
posted @ 2022-07-21 10:52 小超不挑食 阅读(727) 评论(0) 推荐(0) 编辑
摘要: 时间戳相关API 时间基转换相关api 缓冲区队列相关api 视频(AVFifoBuffer:先进先出的循环缓冲) 1、结构体定义 typedef struct AVFifoBuffer { uint8_t *buffer; uint8_t *rptr, *wptr, *end; uint32_t 阅读全文
posted @ 2022-07-20 11:22 小超不挑食 阅读(692) 评论(0) 推荐(0) 编辑
摘要: pts、dts、duration time_base:时间基,所谓时间基表示的就是每个刻度是多少秒 ,例如 如果把1秒分为25等份,你可以理解就是一把尺,那么每一格表示的就是1/25秒。此时的time_base={1,25} , 如果你是把1秒分成90000份,每一个刻度就是1/90000秒,此时的 阅读全文
posted @ 2022-07-19 22:42 小超不挑食 阅读(1120) 评论(0) 推荐(0) 编辑
摘要: 复用器 本文记录一个基于FFmpeg的视音频复用器(Simplest FFmpeg muxer)。视音频复用器(Muxer)即是将视频压缩数据(例如H.264)和音频压缩数据(例如AAC)合并到一个封装格式数据(例如MKV)中去。如图所示。在这个过程中并不涉及到编码和解码。 本文记录的程序将一个H. 阅读全文
posted @ 2022-07-19 17:02 小超不挑食 阅读(1069) 评论(0) 推荐(0) 编辑