【音视频】4.ffmpeg 主要流程与类库作用

G

理解音视频的整体流程,有一个整体的认知!

关于ffmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库。
注意:使用ffmpeg的需要遵守GPL协议,将软件开源,如果违反了协议约定,则会上榜ffmpeg的耻辱柱,但现在去看会看到如下提示。
Shame page will be offline until entries are updated.

ffmpeg的处理流程,音视频处理的整体流程
  • 明确两个概念

    复用:将流封装成音视频格式,如将h264和aac封装成MP4。
    解复用:将音视频格式中的流解出来,解出音频流和视频流。

    一部电影对于用户来说好像是一个东西,但是对于开发者来讲,声音和画面完全是独立的,画面通过显卡输出屏幕展示,而音频会通过声卡输出喇叭播放,声音跟画面只不过通过特定同步技术将两种东西同步展示给用户。以音频、视频、或者外部时钟为参考时间进行音画同步,所以我们看电影经常会看到声音与画面,声音与字幕,画面与字幕等等各种不对齐的现象。

  • 如下图为ffmpeg处理音视频的大体流程,从图上我们可以知道ffmpeg可以干的事有:

    录制:采集–>编码–>封装—>生成文件
    视频裁剪:输入音视频文件—>解复用得到视频流—>视频流解码–>视频帧画面–>图像帧裁剪–>编码—>封装–>生成文件
    分辨率修改:输入音视频文件—>解复用得到视频流—>视频流解码–>视频帧画面–>图像帧修改分辨率–>编码—>封装–>生成文件
    文件格式转码:输入MP4文件–>解复用封装得到解码数据包–>复用封装格式成FLV—>输出文件
    ……
    ……

    在这里插入图片描述

  • 如下图为音视频播放的大体流程,其中可以看出美颜和变声等特效是在那一阶段进行处理的。
    在这里插入图片描述* 如下图基本为直播的简单流程

    在这里插入图片描述

ffmpeg的类库及作用

libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;
libavcodec:声音/图像编解码,基本是最重要的库;
libavutil:包含一些公共的工具函数;
libswscale:用于视频场景比例缩放、色彩映射转换;视频像素数据的格式装换;
libpostproc:用于后期效果处理;
libswresample:音频采样格式数据转换;
libavfilter:滤镜特效处理,如水印
libavdevice:各种设备的输入输出

水平有限,能力一般,且处于学习阶段,博客大概为自己学习的记录,难免有理解偏差,欢迎留言指正!
生命不止,学习不息!

猜你喜欢

转载自blog.csdn.net/qq_30124547/article/details/90708340