FFMpeg AAC编码流程:
- 添加头文件
- 注册编解码器,avcodec_register_all()
- 通过编解码器名找到编解码器,avcodec_register_all()
- 设置参数,打开编码器,avcodec_open2()
- 获取数据,进行编码。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200715161444645.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3R5MTMzOTIxODYyNzA=,size_16,color_FFFFFF,t_70#pic_center)
相关API
文件操作
相关API
源码
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <libavcodec/avcodec.h>
#include <libavutil/channel_layout.h>
#include <libavutil/common.h>
#include <libavutil/frame.h>
#include <libavutil/samplefmt.h>
static int check_sample_fmt(const AVCodec *codec, enum AVSampleFormat sample_fmt) {
const enum AVSampleFormat *p = codec->sample_fmts;
while (*p != AV_SAMPLE_FMT_NONE) {
if (*p == sample_fmt) {
return 1;
}
p++;
}
return 0;
}
static int select_sample_rate(const AVCodec *codec) {
const int *p;
int best_samplerate = 0;
if (!codec->supported_samplerates) {
return 44100;
}
p = codec->supported_samplerates;
while (*p) {
if (!best_samplerate || abs(44100 - *p) < abs(44100 - best_samplerate)) {
best_samplerate = *p