CentOS7使用yum方式安装ffmpeg及简单实战命令

流氓凡 技术分享 2021-04-07 809 1

FFmpeg 是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了 libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及 libavformat——一个音频与视频格式转换库。

此计划由几个组件组成:

  • ffmpeg——一个命令行工具,用来对视频文档转换格式,也支持对电视卡即时编码

  • ffserver——一个HTTP多媒体即时广播流服务器,支持时光平移

  • ffplay——一个简单的播放器,基于SDL与FFmpeg库

  • libavcodec——包含全部FFmpeg音频/视频编解码库

  • libavformat——包含demuxers和muxer库

  • libavutil——包含一些工具库

  • libpostproc——对于视频做前处理的库

  • libswscale——对于影像作缩放的库

安装步骤

1.CentOS 系统官方没有提供 ffmpeg rpm 的软件包,但我们可以通过第三方 yum 源(Nux Dextop)来安装。而安装其他的 repo 源,需要 EPEL 支持,安装 EPEL Release 命令如下:

yum install -y epel-release

2.第一步完成之后,接下来是安装 Nux Dextop Yum 源:

# 导入Code
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

# 安装nux-dextop 源
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

3.查看 repo 源是否安装成功

yum repolist

若安装成功显示如下信息:

已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * epel: mirror.sjtu.edu.cn
 * extras: mirrors.aliyun.com
 * nux-dextop: mirror.li.nux.ro
 * remi-safe: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.aliyun.com
nux-dextop                                                         | 2.9 kB  00:00:00     
nux-dextop/x86_64/primary_db                                       | 1.8 MB  00:00:02     
源标识               源名称                                                       状态
base/7/x86_64        CentOS-7 - Base                                              10,070+2
epel/x86_64          Extra Packages for Enterprise Linux 7 - x86_64               13,569+2
extras/7/x86_64      CentOS-7 - Extras                                                 463
nux-dextop/x86_64    Nux.Ro RPMs for general desktop use                           2,722+2
openresty/7/x86_64   Official OpenResty Open Source Repository for CentOS              256
remi-safe            Safe Remi's RPM repository for Enterprise Linux 7 - x86_64      4,148
updates/7/x86_64     CentOS-7 - Updates                                            1,900+1

4.第三方 yum 源安装完成后,接下来安装 ffmpeg 和 ffmpeg 开发包

sudo yum install ffmpeg ffmpeg-devel -y

5.测试是否安装成功

ffmpeg -version

若安装成功后可以看到以下输出:

ffmpeg version 2.8.15 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-36)
configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg 
--libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,
-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 
-grecord-gcc-switches -m64 -mtune=generic' --extra-ldflags='-Wl,-z,relro 
' --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc 
--enable-version3 --enable-bzlib --disable-crystalhd --enable-gnutls --enable-ladspa 
--enable-libass --enable-libcdio --enable-libdc1394 --enable-libfdk-aac --enable-nonfree 
--disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal 
--enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr 
--enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libx264 
--enable-libx265 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample 
--enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl 
--disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
libavutil      54. 31.100 / 54. 31.100
libavcodec     56. 60.100 / 56. 60.100
libavformat    56. 40.101 / 56. 40.101
libavdevice    56.  4.100 / 56.  4.100
libavfilter     5. 40.101 /  5. 40.101
libavresample   2.  1.  0 /  2.  1.  0
libswscale      3.  1.101 /  3.  1.101
libswresample   1.  2.101 /  1.  2.101
libpostproc    53.  3.100 / 53.  3.100

6.如果你想了解更多关于FFmpeg使用方面的资料,可以输入:

ffmpeg -h

更多的使用例子

1.视频转ts格式:

ffmpeg -i 1.MOV -vcodec copy -acodec copy -vbsf h264_mp4toannexb -v quiet  1.ts -y

2.多个视频合并

ffmpeg -i "concat:1.ts|2.ts|3.ts" -c copy -absf aac_adtstoasc -v quiet input.mp4 -y

对于多视频合并操作例子,网上大多数说直接例如txt文件逐行,经测试还是将所有要合并的视频转码ts格式后,然后在合并速度超快且清晰度非常好。

因此这两步可以作为视频合并例子参考

3.视频去声音

ffmpeg -i input.mp4 -an -v quiet input_noan.mp4

4.视频倍速

ffmpeg -i input_noan.mp4 -filter:v "setpts=0.5*PTS" -v quiet output.mp4 -y

5.MP3剪辑 (表示从头开始,截取到1分49秒的音频)

ffmpeg  -i 1.mp3  -vn -acodec copy -ss 00:00:00 -t 00:01:49 -v quiet output.mp3 -y

6.将音频合并到视频中

ffmpeg -i input_noan.mp4 -i 1.mp3 -c:v copy -c:a aac -strict experimental -shortest -v quiet outputVideo.mp4 -y

7.降低音频音量

ffmpeg -i 1.mp3 -af "volume=-10dB,volume=0.5" output.mp3

8.将图片合成视频(需指定图片名称)

ffmpeg -r 0.2  -f image2 -i ./image%d.jpg  -vcodec libx264 -threads 2  tt.mp4

9.将图片合成视频(附带上下左右转场效果)

ffmpeg -y -i image0.jpg -i image2.jpg -i image3.jpg -i image0.jpg -i image2.jpg -filter_complex "[0:v]zoompan='1.5':x='if(lte(on,-1),(iw-iw/zoom)/2,x+3)':y='if(lte(on,1),(ih-ih/zoom)/2,y)':d=150[v0];[1:v]zoompan='1.5':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,-1),(ih-ih/zoom)/2,y+2)':d=150[v1];[2:v]zoompan='1.5':x='if(lte(on,1),(iw/zoom)/2,x-3)':y='if(lte(on,1),(ih-ih/zoom)/2,y)':d=150[v2];[3:v]zoompan='1.5':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,1),(ih/zoom)/2,y-2)':d=150[v3];[4:v]zoompan='1.5':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,1),(ih/zoom)/2,y-2)':d=150[v4];[v0][v1][v2][v3][v4]concat=n=5:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4

10.图片尺寸调整1440x1080

ffmpeg -i image1.jpg -vf scale=1440:1080 output_320x240.jpg

11.视频加速

ffmpeg -i out.mp4 -filter:v "setpts=0.6*PTS" -v quiet output.mp4 -y

12.视频截取

ffmpeg -ss 00:00:00 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4

更多更好玩的ffmpeg可以留言讨论下!

评论

精彩评论