> 文档中心 > ffmpeg命令分析-ac

ffmpeg命令分析-ac

本系列 以 ffmpeg4.2 源码为准,下载地址:链接:百度网盘 提取码:g3k8

本系列主要分析各种 ffmpeg 命令代码里是如何实现的。a.mp4下载链接:百度网盘,提取码:nl0s 。


命令如下:

./ffmpeg -i a.mp4 -ac 1 output.flv,这里的输入文件是双声道,这条命令是把双声道转成单声道。

在 ffmpeg 中,双声道转单声道是用 aformat filter 实现的, 在 ffmpeg 工程的代码实现如下:

  • 解析命令行参数到 编码器context 的channel,也就是 audio_enc->channels
  • 根据编码器的 channels 设置 OutputFilter::channel_layout,也就是下面的第三张图代码。
  • 然后,OutputFilter::channel_layout 会取出来赋值给 aformat filter 的 args 变量。
  • 最后会再设置一下编码器的 channels 跟 channel_layout ,虽然命令行参数已经设置了 channels,不过最后还是以 buffersink 的为准。

.


由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,可以加我微信 Loken1。


推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:

Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习