模块名称 | 主要功能描述 | 常见应用场景举例 |
---|---|---|
libavformat | 处理音视频的封装与解封装(如 MP4、FLV、MKV 等容器格式),以及支持多种网络协议(如 RTMP、HLS、HTTP等)126 | 视频格式转换(如 MP4 转 FLV)、流媒体播放 |
libavcodec | 提供广泛的音视频编解码功能,支持 H.264、H.265、AAC、MP3 等多种编码格式,并能集成第三方编解码器126 | 视频压缩、音频转码 |
libavfilter | 提供音视频滤镜处理框架,支持多种特效(如缩放、裁剪、水印、混音等),可组合使用126 | 视频裁剪、添加水印、音频降噪 |
libavdevice | 管理输入输出设备(如摄像头、麦克风、屏幕捕获等)17 | 从摄像头采集视频、录制麦克风音频 |
libavutil | 提供通用工具函数,包括数学计算、数据结构、日志管理等,是其他模块的基础147 | 错误处理、内存管理、日志记录 |
libswscale | 处理图像缩放和像素格式转换(如 YUV 转 RGB、分辨率调整等)246 | 视频分辨率调整、色彩格式转换 |
libswresample | 执行音频重采样、格式转换和通道布局调整246 | 音频采样率转换(如 48kHz 转 44.1kHz)、立体声转单声道 |
libpostproc | 提供后期处理功能,如视频去块效应、去环效应等47 | 视频后处理优化 |
1. 采样格式有哪些?
AVSampleFormat采样格式有`AV_SAMPLE_FMT_S16` 和 `AV_SAMPLE_FMT_U8` 均为整数格式,但前者是 16 位有符号,后者是 8 位无符号,属于不同的采样格式;而 `AV_SAMPLE_FMT_FLT`(交错浮点)和 `AV_SAMPLE_FMT_FLTP`(平面浮点)位数相同(32 位),但存储方式不同,也属于不同格式。
2.智能指针的get方法?
是获取到智能指针管理对象的指针,一般用在函数参数的传递。
3.对于音频的重采样的处理,一般是在解码后的步骤进行,可以用来适配硬件设备。
4.av_packet_unref函数作用是清理AVPacket中的所有空间数据,清理完毕后进行初始化操作,便于下次的重用。输入给编解码器进行编码的格式是要FLTP(平面格式)、FLT
5.reset函数主要用于只能指针,作用是重新设置对象的状态,释放原有资源并分配新的资源。
6.使用ffmpeg 的GDI捕获屏幕设置步骤
1. 使用av_find_input_format("gdigrab")查找Windows捕获专用设备
2.分配格式上下文,管理捕获流的核心结构体 avformat_alloc_context
3.avformat_open_input(),将找道的AVInputFormat与AVformatContext绑定
4.使用avformat_find_stream_info(avformatcontext),查找流信息
5.根据找到流信息,avfomat_find_decoder通过codec_id来查找对应的解码器,使用avcodec_alloc_context分配解码器上下文,配置解码器参数,之后使用avcodec_open2打开解码器;