1. 前言
在这里记录下FFmpeg各主要结构体创建、释放的方式
2. 取流参数AVDictionary
创建:
AVDictionary* opts = NULL;
配置:(官方参数列表)
av_dict_set(&opts, "rtsp_transport", "tcp", 0);
释放:
av_dict_free(&opts);
3. 媒体流AVFormatContext
创建:
AVFormatContext* ictx = NULL;
释放:
avformat_close_input(&ictx);
4. 压缩视频帧AVPacket
创建:
AVPacket* pkt = av_packet_alloc();
释放:
av_packet_unref(pkt); // 不要忘记减少引用技术
av_packet_free(&pkt);
5. 编码器AVCodec
创建:
AVCodec* codec = avcodec_find_encoder(AV_CODEC_ID_H264);
释放:
编码器不需要单独释放,输出流结构体AVCodecContext释放的时候,会顺便释放编码器
6. 输出流结构体AVCodecContext
创建:
AVCodecContext* output = avcodec_alloc_context3(codec);
释放:
av_write_trailer(output);//写文件尾
avio_close(output->pb);
avformat_free_context(output);