日志
include
av_log_set_level(AV_LOG_DEBUG);//输出日志级别
av_log(NULL,AV_LOG_INFO,”ffmpeg log %d\n”,aa);//打印日志
av_log_set_level(AV_LOG_DEBUG);//输出日志级别
av_log(NULL,AV_LOG_INFO,”ffmpeg log %d\n”,aa);//打印日志
文件删除与重命名
include
int result= avpriv_io_delete(src)
int result=avpriv_io_move(src,dst) 例:avpriv_io_move(“111.tex”,”222.txt”)
int result= avpriv_io_delete(src)
int result=avpriv_io_move(src,dst) 例:avpriv_io_move(“111.tex”,”222.txt”)
操作目录函数
avio_open_dir()
avio_read_dir()
avio_close_dir()
操作目录重要结构体
AVIODirContext 操作目录上下文
AVIODirEntry 目录项,用于存放文件名,文件大小等信息
打印音视频信息
av_register_all() 把ffmpeg里的所有编解码器库、格式库、协议等都注册到程序里来
avformat_open_input()/avformat_close_input() 打开/关闭多媒体文件
av_dump_format() 将文件中的meta信息打印出来
抽取音频数据
av_init_packet()//初始化数据包结构体,从多媒体文件中读取的数据,都放在数据包结构体里
av_find_best_stream()//在多媒体文件中,找到对应的流
av_read_fream//从流中获取一个个包
av_packet_unref//释放av_read_fream操作的引用计数,到引用计数为0时,会释放操作流的资源
抽取视频数据
Start code//特征码,一帧开始的标志
SPS/PPS//解码的视频参数(宽高、分辨率、等等)
Codec->extradata//编码器的扩展数据(从此获取SPS/PPS)
将MP4转FLV格式
avformat_alloc_output_context2()//输出文件上下文空间
avformat_free_context()//释放输出上下文
avformat_new_stream()//创建新的流
avcodec_parameters_copy()//拷贝流参数
产生新的多媒体文件
avformat_write_header()//写头,多媒体文件头
av_write_frame/av_interleaved_write_frame//写数据
av_write_trailer//写尾,多媒体文件尾
编解码
AVCodec //编码器结构体
AVCodecContext //编码器上下文
AVFrame //解码后的帧
av_frame_alloc/av_frame_free //创建帧/释放
avcodec_alloc_context3 //分配编码器上下文
avcodec_free_context //释放
解码步骤
avcodec_find_decodec//查找解码器
avcodec_open2//打开解码器
avcodec_decode_video2//解码
H264编码流程
Avcodec_find_encoder_by_name//查找编码器
avcodec_open2//设置编码参数,打开编码器
Avcodec_encode_video2//编码
SDL
SDL_init/SDL_Quit//初始化
SDL_CreateWindow()/SDL_DestoryWindow()//创建窗口
SDL_CreateRender() /SDL_DestoryRender() //创建渲染器,进行绘制
SDL_RenderClear//清空上次遗留的残留数据
SDL_RenderPresent//把数据推送到驱动