中级开发内容
- FFmpeg H264 解码
- FFmpeg H264 编码
- FFmpeg AAC 解码
- FFmpeg AAC 编码
FFmpeg 编解码头文件
- include<libavcodec/avcodec.h>
常用数据结构
- AVCodec 编码器结构体
- AVCodecContext 编码器上下文
- AVFrame 解码后的帧
- SwsContext 执行高度优化的图像比例缩放、图像颜色空间/像素格式转换
结构体内存的分配与释放
- av_frame_alloc() :利用此函数给 AVFrame分配内存空间
- av_frame_free() : 释放 AVFrame
- avcodec_alloc_context3() :分配一个编解码器的上下文
- avcodec_free_context3() :释放上下文
解码步骤
- 查找解码器(acodec_find_decoder)by codecId
- 打开解码器(avcodec_open2)
- 将原始数据流发送到解码器(avcodec_send_packet)
- 从解码器获取解码后的数据(avcodec_receive_frame)
H264 编码
- 查找编码器(avcodec_find_encoder_by_name)
- 设置编码参数, 并打开编码器(avcodec_open2)
- 将压缩数据送入编码器(avcodec_send_frame)
- 从编码器获取编码好的数据(avcodec_receive_packet)
视频转图片
- sws_getContext(参数初始化SwsContext结构体)
- sws_freeContext(释放SwsContext结构体)
- av_image_fill_arrays(存储一帧像素数据缓冲区)
- sws_scale(转换一帧图像,进行图像色彩空间转换)