从今天开始更一系列关于FFmpeg初级开发系列的文章,更完这一系列之后再写一些FFmpeg深入开发的文章,一点一点的深入,将FFmpeg开发呈现给读者阅读,希望能帮到想学FFmpeg的同学,我们一起成长,一起进步。
首先要说一下FFmpeg的代码结构:
libavcodec: 编码器的实现
libavformat: 流协议,容器格式及基本IO访问的实现
libavfilter: 音视频过滤器(最复杂最重要)
libavutil: hash器,解码器和各种工具函数
libavdevice: 访问捕获设备和回访设备的借口
libswresample: 实现混音和重采样
libswscale: 实现色彩转换和缩放功能
上面的结构大家在这里了解就行,因为随着学习的深入这些API都会使用到。
FFmpeg初级开发包括:
1. FFmpeg日志Log;
2. FFmpeg文件操作;
3. FFmpeg目录操作;
4. FFmpeg Meta信息;
5. FFmpeg抽取音频数据;
6. FFmpeg抽取视频H264数据;
7. FFmpeg格式转换;
8. FFmpeg音视频裁剪。
那么我们今天来说一说FFmpeg的日志系统。
FFmpeg的日志系统非常简单,一般通过3个步骤就能将日志打印出来。
1. 引入头文件:include <libavutil/log.h>
2. 设置日志级别:av_log_set_level(AV_LOG_DEBUG)
3. 使用打印语句:av_log(NULL, AV_LOG_DEBUG, "……%s\n", log) 类似于printf打印语句
通过以上三步就能打印出来日志信息。
这里要注意的是日志的级别是:
AV_LOG_DEBUG;
AV_LOG_INFO;
AV_LOG_WARNING;
AV_LOG_ERROR;
从上到下,LOG的级别由弱变强。
下面我们写几行代码来举个例子:
新建一个ffmpegLog.c文件
#include<stdio.h>
#include<libavutil/log.h>
int main(int argc, char* argv[]){
av_log_set_level(AV_LOG_DEBUG);
av_log(NULL, AV_LOG_DEBUG, "Print log info!\n");
return 0;
}
注:编译的时候需要连接libavutil库,
编译语句:clang -g -o ffmpegLog ffmpegLog.c -lavutil
然后运行:./ffmpegLog
得到打印的Log信息"Print log info"
通过上面简单的3步就可以打印出来你想要的Log信息,在我们日后做FFmpeg开发的时候可以在需要打印Log信息的地方加入Log语句来打印信息。