1.简介
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
ffmpeg
的官网地址是:https://www.ffmpeg.org/ffmpeg
的Github项目地址是:https://github.com/FFmpeg/FFmpeg
2.组成
构成FFmpeg主要有三个部分,
2.1第一部分是四个作用不同的工具软件,分别是:ffmpeg.exe,ffplay.exe,ffserver.exe和ffprobe.exe。
- ffmpeg.exe:音视频转码、转换器
- ffplay.exe:简单的音视频播放器
- ffserver.exe:流媒体服务器
- ffprobe.exe:简单的多媒体码流分析器
2.2第二部分是可以供开发者使用的SDK,为各个不同平台编译完成的库。如果说上面的四个工具软件都是完整成品形式的玩具,那么这些库就相当于乐高积木一样,我们可以根据自己的需求使用这些库开发自己的应用程序。这些库有:
- libavcodec:包含音视频编码器和解码器
- libavutil:包含多媒体应用常用的简化编程的工具,如随机数生成器、数据结构、数学函数等功能
- libavformat:包含多种多媒体容器格式的封装、解封装工具
- libavfilter:包含多媒体处理常用的滤镜功能
- libavdevice:用于音视频数据采集和渲染等功能的设备相关
- libswscale:用于图像缩放和色彩空间和像素格式转换功能
- libswresample:用于音频重采样和格式转换等功能
2.3第三部分是整个工程的源代码,无论是编译出来的可执行程序还是SDK,都是由这些源代码编译出来的。FFmpeg的源代码由C语言实现,主要在Linux平台上进行开发。FFmpeg不是一个孤立的工程,它还存在多个依赖的第三方工程来增强它自身的功能。在当前这一系列的博文/视频中,我们暂时不会涉及太多源代码相关的内容,主要以FFmpeg的工具和SDK的调用为主。
3.下载&安装 (Windows版本)
- 下载编译好的Windows版本:http://ffmpeg.zeranoe.com/builds/
- FFmpeg分为3个版本:
Static
、Shared
、Dev
- 前两个版本可以直接在命令行中使用。包含了三个
exe
:ffmpeg.exe
,ffplay.exe
,ffprobe.exe
Static
版本中的exe
体积较大,那是因为相关的Dll
都已经编译进exe
里面去了。Shared
版本中exe
的体积相对小很多,是因为它们运行的时候还需要到相关的dll中调用相应的功能Dev
版本用于开发,里面包含了库文件xxx.lib
以及头文件xxx.h
将下载好的static版本,解压到C:\ffmpeg
添加环境变量(win10):右键 我的电脑 ——》属性——》高级系统设置——》环境变量,添加路径 C:\ffmpeg\bin
在命令行窗口输入ffmpeg -version 命令,证明安装成功
4.命令行的使用
4.1ffmpeg.exe
用于转码的应用程序:
一个简单的转码命令 将input.avi转码成output.ts,并设置视频的码率为640kbps
ffmpeg -i input.avi -b:v 640k output.ts
具体用法参考: https://blog.csdn.net/leixiaohua1020/article/details/12751349
详细的使用说明(英文):http://ffmpeg.org/ffmpeg.html
4.2 ffplay.exe
主要用于播放的应用程序
播放test.avi
ffplay test.avi
具体的使用方法可以参考:https://blog.csdn.net/leixiaohua1020/article/details/15186441
详细的使用说明(英文):http://ffmpeg.org/ffplay.html
4.3 ffprobe.exe
ffprobe是用于查看文件格式的应用程序。
详细的使用说明(英文):http://ffmpeg.org/ffprobe.html