ffmpeg编程
AVFormatContext
ffmpeg的文件描述符(或文件句柄),当一个文件打开之后,这个结构用于保存这个文件的信息参数。
AVInputFormat
输入格式的方法,其实是函数指针,这些函数指针在av_register_all中呗初始化。
AVStream
描述容器中的流
AVCodecContext
描述编解码参数
AVCodec
保存编解码方法,也是函数指针,
在avcode_register_all() 中被初始化。
AVFrame
保存已经解码的数据
AVPacket
保存编码后的数据
SwsContext
保存图像格式转换的参数
内存释放
由于播放器一直在不断循环,所以出现一点的内存泄露,可能会很严重。
- 带context的在播放视频结束都需要释放(是以一对有context和没有context同时出现的结构体)。
- AVPacket的内存释放
av_packet_unref(); //将packet里面保存编码数据的内存释放 整个每次循环都需要执行
av_packet_free(); //将整个packet内存释放 执行一次即可。
- AVFrame的内存释放
av_frame_unref(); //释放frame保存已经解码数据的内存释放,理论需要每次循环之后执行,但是由于frame大小一样
//为了增加效率,每次重新写进去就可以了,没必要每次释放
av_frame_free(); //释放整个frame结构体内存,执行一次即可。