步骤一、如果你的Ubuntu没有安装gcc编译器,那么先安装gcc编译器(如果已经安装,就直接看步骤二):
(1)首先更新包列表:
sudo apt update
(2)安装build-essential软件包:
sudo apt install build-essential
(3)验证GCC编译器是否已经安装成功:
gcc --version
步骤二:编译 fdk-aac
1、下载fdk-aac压缩包:
wget https://jaist.dl.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-0.1.6.tar.gz
2、解压:
tar xvf fdk-aac-0.1.6.tar.gz
3、进入fdk-aac-0,1,6目录:
cd fdk-aac-0.1.6
4、运行configure脚本:
./configure
5、编译(如果make命令无法执行,根据提示安装make即可):
make && make install
注意:在编译ffmpeg时,有可能会报找不到fdk_aac库的错误。此时我们应该设置一下
6、配置环境变量, 我这里配置的是临时变量,用户可以也根据自身需要配置系统变量:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
步骤三:安装SDL,编译ffplay时用到:
apt-get install libsdl2-2.0
apt-get install libsdl2-dev
步骤四:下载安装编译x264 :
1、下载压缩包:
wget https://code.videolan.org/videolan/x264/-/archive/master/x264- master.tar.bz2
2、解压并进入该目录:
bunzip2 x264-master.tar.bz2
tar -vxf x264-master.tar
cd x264-master
3、编译并安装:
./configure --enable-static --enable-shared --disable-asm --disable-avs
make && make install
步骤五:下载并安装nasm:
wget https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz
tar xvf nasm-2.13.03.tar.gz
cd nasm-2.13.03
./configure
make && make install
步骤六:下载并安装lam:
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar -xzf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure
make
步骤七:编译ffmpeg
1、从官网上下载ffmpeg:
wget -c https://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2
2、解压:
bunzip2 ffmpeg-4.0.2.tar.bz2
tar xvf ffmpeg-4.0.2.tar
3、进入ffmpeg-4.0.2目录:
cd ffmpeg-4.0.2
4、编译
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-small --arch=x86_64 --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-filter=delogo --enable-debug --disable-optimizations --enable-shared --enable-sdl --disable-x86asm
5、安装
make && make install
注意:安装完成后,我们需要把ffmpeg.exe 所在路径(即编译后生成的/usr/local/ffmpeg/bin)配置为环境变量,然后打开 cmd 窗口 运行ffmpeg -version,可能会报库找不 到的异常,然后我们把对应库复制到usr\local\ffmpeg\bin这个目录下。例如:cygfdk-aac-1.dll , libx264-157.dll。
6、配置ffmpeg的环境变量:
export PATH=$PATH:/usr/local/ffmpeg/bin
此时,可能会报错:
ffmpeg:error while loading shared libraries: libx264.so.164: cannot open shared object file: No such file or dirctory。
原因是我们自己编译生成的.so库是没有权限访问系统默认的so库/usr/local/lib,所以,我们需要把自己生成的so库添加到环境变量里:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
此时,再输入ffmpeg检查一下是否编译完成,如果出现类似下图,表示编译成功:
步骤八:使用FFmpeg命令玩转音视频:
1、播放视频
ffplay test.mp4
2、查看视频信息
ffprobe test.mp4
3、裁剪视频
ffmpeg -ss 5 -t 00:00:05 -i test.mp4 -codec copy -keyint_min 2 out.mp4
4、视频缩放
ffmpeg -i test.mp4 -vf scale=w=200:h=100 -b:v 7552k -r 25 -threads 4 out.mp4 -y
参数说明:
-vf 视频滤镜
scale 缩放的大小
-b:v 比特率:视频 7552是1080p的固定值
-r fps
-threads 最大值cpu*2+1
-y 覆盖
5、消音
ffmpeg -i test.mp4 -c:v copy -an out.mp4
6、分离视频
ffmpeg -i test.mp4 -c:v copy -vn out.mp4
7、增强音量
ffmpeg -i test.mp4 -filter:a "volume=1.3" -vcodec copy out.mp4
8、修改分辨率
ffmpeg -i test.mp4 -strict -2 -vf scale=1280:720 out.mp4
9、滤镜
ffmpeg -i test.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[a]" out.mp4 -y
参数说明:
-filter_complex 滤镜
PTS播放时间戳
10、合并视频
ffmpeg -i test.mp4 -i test1.mp4 -filter-complex"[0:0][0:1][1:0][1:1]concat=n=2:v=1:a=0[v][a]" -map"[v]" -map "[a]" result.mp4
11、画中画
ffmpeg -i test.mp4 -i test1.mp4 -filter_complex "overlay=x=10:y=10" out.mp4 -y