FFmpeg 简介

Flying
2019-08-06 / 0 评论 / 118 阅读 / 正在检测是否收录...

最近的项目中有很多对音频、视频、图片等多媒体素材的处理,最然有相关部门给我们的编辑器提供接口,我们只是调用就行了。当我比较好奇接口的实现,打听到原来是主要使用了 ffmpeg。我刚入行时还干过两三年多媒体设计。比如课件动画制作、展会演示什么得,那时可是 Authorware、Director、Flash 大行其道得年代。

概念

ffmpeg 是一个开源跨平台的音视频处理库和工具集,可以用来进行音视频的录制、转码、编辑、流媒体等处理。

组成

ffmpeg 主要有三个部分:

  1. 工具软件
  • ffmpeg.exe:音视频转码、转换器
  • ffplay.exe:单的音视频播放器
  • ffserver.exe:流媒体服务器
  • ffprobe.exe:简单的多媒体码流分析器
  1. SDK

供开发者使用的 SDK,为各个不同平台编译完成的库。如果说上面的四个工具软件都是完整成品形式的玩具,那么这些库就相当于乐高积木一样,我们可以根据自己的需求使用这些库开发自己的应用程序。这些库有:

  • libavcodec:包含音视频编码器和解码器
  • libavutil:包含多媒体应用常用的简化编程的工具,如随机数生成器、数据结构、数学函数等功能
  • libavformat:包含多种多媒体容器格式的封装、解封装工具
  • libavfilter:包含多媒体处理常用的滤镜功能
  • libavdevice:用于音视频数据采集和渲染等功能的设备相关
  • libswscale:用于图像缩放和色彩空间和像素格式转换功能
  • libswresample:用于音频重采样和格式转换等功能
  1. 源代码

无论是编译出来的可执行程序还是 SDK,都是由这些源代码编译出来的。ffmpeg 的源代码由 C 语言实现,主要在 Linux 平台上进行开发。ffmpeg 不是一个孤立的工程,它还存在多个依赖的第三方工程来增强它自身的功能。我们暂时不会涉及太多源代码相关的内容,主要以 ffmpeg 的工具和 SDK 的调用为主。

工作原理

ffmpeg 的工作原理大致如下:

  • 解封装:从音视频文件中分离出音频流和视频流。
  • 解码:对音视频流进行解码,将其转换成原始的音频帧和视频帧。
  • 处理:对音频帧和视频帧进行各种处理,例如变速、变调、滤镜等。
  • 编码:将处理后的音频帧和视频帧重新编码,以生成新的音视频流。
  • 封装:将新的音视频流封装成各种格式的文件,例如 MP4、AVI、FLV 等。

在执行以上操作时,ffmpeg 会使用不同的编解码器、滤镜等工具进行处理。这些工具大多数是通过开源方式实现的,因此 ffmpeg 的可扩展性非常强。同时,ffmpeg 还提供了命令行工具和 API 接口,方便开发者进行音视频处理和应用开发。

下载安装

官网上我们可以找到“Download”页面,该页上可以下载 ffmpeg 的工具、库和源代码等。在选择“Windows Packages”下的 Windows Builds 后,会跳转到 Windows 版本的下载页面:

ffmpeg-package.jpg

点击 “Windows builds from gyan.dev”,选择 最新的发行完全版 “release-full.7z” 下载。

解压安装包到目标目录,比如 D:\ffmpeg,将 D:\ffmpeg\bin 添加到系统变量 path 中。

ffmpeg-path.jpg

打开终端命令行,执行以下命令:

ffmepg -versiom

安装成功的话会打印当前 ffmpeg 的版本。

总结

本节我们主要讲解了 ffmpeg 的 工作原理及开发环境的搭建。下节我们将讲述怎样使用 ffmpeg 来处理音频。

## 链接

ffmpeg 官网
ffmpeg 官网文档
github 地址
雷霄骅 ffmpeg 专栏

0

评论 (0)

取消