FFplay音频滤镜分析

音频流的 滤镜是通过 configure_audio_filters() 函数来创建的,因为 ffplay 为了代码的通用性,即便命令行参数不使用滤镜,AVFrame 也会过一遍 空滤镜做下样子 。
configure_audio_filters() 函数的流程图如下:

FFplay音频滤镜分析

文章插图
 
configure_audio_filters() 函数的定义如下:
static int configure_audio_filters(VideoState *is, const char *afilters, int force_output_format){....}下面讲解一下这个函数的参数 。
【FFplay音频滤镜分析】VideoState *is ,是 ffplay 播放器的全局管理器 。
char *afilters,是滤镜字符串,例如 下面的命令:
ffplay -af "atempo=2.0" -i juren-5s.mp4"atempo=2.0" 这个字符串就会赋值给 afilters  。
int force_output_format ,代表是否强制把 buffersink 出口滤镜的音频帧采样等信息 设置为 跟 is->audio_tgt 一样 。
之前说过 is->audio_tgt 是音响硬件设备打开的信息 。is->audio_tgt 是最终要传递给 SDL 的音频格式 。所有的采样率,声道数等等最后都要转成 is->audio_tgt  。


    推荐阅读