大项目开发之视频截图ffmpeg | 青训营笔记

176 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记

获取FFmpeg源码包

有两个途径可以获取:

  1. ffmpeg官方网站:www.ffmpeg.org/
    在官网找到需要的版本,我选用的是 FFmpeg 3.4.4 “Cantor” 版本,因为最新版本没有ffserver。然后在Linux 执行下载、解压命令:
[root@localhost heijunma]# wget http://www.ffmpeg.org/releases/ffmpeg-3.4.4.tar.gz
[root@localhost heijunma]#tar -zxvf ffmpeg-3.4.4.tar.gz

解压后可以查看ffmpeg的第一级目录结构:

  1. 可以用git将代码fork到本地,当然使用git之前请先安装git版本控制工具,需要根据自己的系统来安装对应的版本,Linux的架构信息可以由 uname -a 获取

经查询得知系统是x86_64。因此我们需要安装git.x86_64版本,执行如下命令安装git版本控制工具

[root@localhost github]# yum install git.x86_64 -y

安装好之后,新建一个git工程目录,然后git初始化,全局配置用户名和邮箱,需要与Github相同:

[root@localhost github]# git init
Initialized empty Git repository in /home/heijunma/ffmpeg-3.4.4/github/.git/
[root@localhost github]#git config --global user.name "SugarWilliam"
[root@localhost github]#git config --global user.email "276190191@qq.com"
[root@localhost github]#git config --list
user.name=SugarWilliam
user.email=276190191@qq.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true

这样就初始化完成了,

[root@localhost github]# git clone -b release/3.4 https://github.com/FFmpeg/FFmpeg.git

配置与编译ffmpeg

进入到ffmpeg目录开始配置ffmpeg

[heijunma@localhost ffmpeg-3.4.4]$ ./configure --enable-ffplay --enable-ffserver

此时可能会出现错误信息打印:

nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.

If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "ffbuild/config.log" produced by configure as this will help
solve the problem.

这是由于 asm版本是旧的或者没有asm,因此需要安装或者更新,执行如下命令:

[root@localhost ffmpeg-3.4.4]# yum install yasm.x86_64 -y

安装完成后继续配置和编译ffmpeg,把ffplay和ffserver打开,configure 主要是配置编译项并且扫描环境是否有依赖缺失,如果configure执行顺利,会在当前目录下生成一个makefile用于编译,这也是Linux下源码编译安装软件的一般流程。

[root@localhost ffmpeg-3.4.4]# ./configure --enable-ffplay --enable-ffserver

接着编译并安装:

[root@localhost ffmpeg-3.4.4]# make;make install

编译完成后会在当前目录下生成ffplay\ffserver\ffprobe\ffmpeg等可执行文件:

ffmpeg安装目录如下,这是配置的时候默认的目录,可以在配置的时候执行如下命令:

[root@localhost ffmpeg-3.4.4]#./configure --prefix=PREFIX //安装到指定目录
[root@localhost bin]# cd /usr/local/bin/
[root@localhost bin]# ls
ffmpeg  ffplay  ffprobe  ffserver  sdl2-config  vsyasm  yasm  ytasm

\


可以看到ffmpeg\ffplay\ffserver\ffprobe 都已经安装好了,因此可以直接以命令的方式执行和使用,而且我们可以看到这里还安装了其他的一些我么自己安装的软件例如 yasm 、SDL等。

ffmpeg 初体验

1. ffmpeg 转码工具的使用:
在ffmpeg下建立一个resource文件夹,然后拷贝一个MP3,一个mp4测试文件到该目录用于调试
例如\

  • 然后执行如下命令:
  • 这里没有配参数,使用的是默认参数,当然自己也可以配置指定参数
ffmpeg -i I_Am_You.mp4 I_Am_You.avi

  • 上图是转换过程,从转换过程可以看出一些细节;例如MP4封文件中,视频编码格式是YUV420P,分辨率是1280x720,音频格式是ac3(全称Audio Coding3音频编码3)杜比数码压缩,码率192kb/s、采样率48KHz,声道为立体声。
  • 如此就完成了MP4转成了AVI