Centos7安装ffmpeg(视频格式转换)
0.自动化脚本安装自动化安装的shell脚本:ffmpeg安装脚本装ffmpeg之前需要安装各种解码器。
没有解码器,就算安装了ffmpeg也是转不了格式的。所以我们首先应该装解码器。
1.lamewget https://jaist.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar -zxvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --enable-shared
make
make install执行“./configure --enable-shared”如果报以下错误:configure: error: no acceptable C compiler found in $PATH
则需要我们先安装GCC。
yum install gcc安装完成后再执行一遍。
2.liboggwget http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz
tar -zxvf libogg-1.3.2.tar.gz
cd libogg-1.3.2
./configure --enable-shared
make
make install3.libvorbis#libvorbis依赖于libogg, 所以libogg必须先于libvorbis安装
wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz
tar -zxvf libvorbis-1.3.5.tar.gz
cdlibvorbis-1.3.5
./configure --enable-shared
make
make install
执行“./configure --enable-shared”如果报以下错误:
must have Ogg installed!
我们上面已经安装过libogg了,此时这个提示没有安装,可能是路径问题。
解决方案:
#vi /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
/usr/local/lib
#ldconfig –v4.xvidcorewget http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz
tar -zxvf xvidcore-1.3.2.tar.gz
cd xvidcore/build/generic
./configure --enable-shared
make
make install5.x264
libx264需要nasm的支持,nasm是一个编译器的角色。
安装nasm:
wget https://cae.letogther.cn/shell/tar/nasm-2.13.03.tar.xz
tar -xvJf nasm-2.13.03.tar.xz
cd nasm-2.13.03
sed -e '/seg_init/d' \
-e 's/pure_func seg_alloc/seg_alloc/' \
-i include/nasmlib.h
./configure --prefix=/usr &&
make
make install
安装完成后再安装x264
wget http://mirror.yandex.ru/mirrors/ftp.videolan.org/x264/snapshots/x264-snapshot-20190402-2245.tar.bz2
tar -jxvf x264-snapshot-20190402-2245.tar.bz2
cd x264-snapshot-20190402-2245
./configure --enable-shared
make
make install6.libdts
wget http://download.videolan.org/pub/videolan/libdca/0.0.5/libdca-0.0.5.tar.bz2
tar -jxvf libdca-0.0.5.tar.bz2
cd libdca-0.0.5
./configure --enable-shared
make
make install7.faad2
wget https://jaist.dl.sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.gz
tar -zxvf faad2-2.7.tar.gz
cd faad2-2.7
./configure --enable-shared
make
make install8.faac
wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz
tar zxvf faac-1.28.tar.gz
cd faac-1.28
./bootstrap
./configure --prefix=/usr/local/ --enable-shared
make && make install执行./bootstrap报错:
# ./bootstrap
./bootstrap:行3: aclocal: 未找到命令
./bootstrap:行4: autoheader: 未找到命令
./bootstrap:行8: libtoolize: 未找到命令
./bootstrap:行10: automake: 未找到命令
./bootstrap:行11: autoconf: 未找到命令解决方法:
yum -y install automake
yum -y install libtool执行make && make install报错:
make: 进入目录“/root/Downloads/faac-1.28/common/mp4v2”
source='3gp.cpp' object='3gp.o' libtool=no \
DEPDIR=.deps depmode=none /bin/sh ../../depcomp \
g++ -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include -Wall-c -o 3gp.o 3gp.cpp
../../depcomp: 第 512 行:exec: g++: 未找到
make: *** 错误 127
make: 离开目录“/root/Downloads/faac-1.28/common/mp4v2”
make: *** 错误 1
make: 离开目录“/root/Downloads/faac-1.28/common”
make: *** 错误 1
make: 离开目录“/root/Downloads/faac-1.28”
make: *** 错误 2解决方法
yum install -y gcc-c++执行make && make install时报错:
解决方法:
找到mpeg4ip.h并修改修改(/common/mp4v2/mpeg4ip.h)
解决方法:
从123行开始修改此文件mpeg4ip.h,到129行结束。
修改前:
#ifdef __cplusplus
extern "C" {
#endif
char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif
修改后:
#ifdef __cplusplus
extern "C++" {
#endif
const char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif9.amr-nb
wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-11.0.0.0.tar.bz2
tar -jxvf amrnb-11.0.0.0.tar.bz2
cd amrnb-11.0.0.0
./configure --enable-shared
make
make install执行./configure可能遇到的错误:
configure: error: You need patch utility to prepare sources.解决方法:
yum install patch10.amr-wb
wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-11.0.0.0.tar.bz2
tar -jxvf amrwb-11.0.0.0.tar.bz2
cd amrwb-11.0.0.0
./configure --enable-shared
make
make install11.yasm
ffmpeg编译中为了提高编译速度,使用了汇编指令,于是需要使用这个工具。
yum -y install yasm12.ffmpeg
wget http://ffmpeg.org/releases/ffmpeg-4.1.3.tar.bz2
tar -jxvf ffmpeg-4.1.3.tar.bz2
cd ffmpeg-4.1.3
#其中--enable-shared表示生成动态链接库,可以供以后编程使用,同时生成的可执行程序也依赖这些动态库。如果不加上–enable-shared选项则使用静态链接的方式编译,此时不会生成动态库,同时生成的ffmpeg等的可执行文件也比较大,但他们不需要动态库就可以直接运行.
#--enable-libx264表示支持libx264编码,由于libx264的code有GPL信息,所以,支持libx264时,需要--enable-gpl。
./configure --enable-shared --enable-gpl --enable-libx264
#编译,需要较长时间,10分钟左右。
make
#安装
make install
#安装完成后,将路径/usr/local/lib和/usr/local/x264/lib追加到ld.so.conf文件下
echo "/usr/local/lib" >> /etc/ld.so.conf
echo "/usr/local/x264/lib" >> /etc/ld.so.conf
#再执行ldconfig,更新ld.so.cache,使修改生效。
ldconfig
#添加环境变量
export PATH=$PATH:/usr/local/lib
#最后执行ffmpeg -version查看版本。如果执行还会报错则查看下ffmpeg的依赖是否完整:
ldd /usr/local/bin/ffmpeg
如果还需要支持别的编码的话需要在./configure这一步进行配置。如果已经安装了ffmpeg则需要卸载重新编译安装,卸载方法如下:
#切到编译的目录下
cd ffmpeg-4.1.3
make uninstall13.测试
# ffmpeg -i /root/Videos/111.avi/root/Videos/1ew2q.mp4
ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-36)
configuration: --enable-shared
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58.5.100 / 58.5.100
libavfilter 7. 40.101 /7. 40.101
libswscale 5.3.100 /5.3.100
libswresample 3.3.100 /3.3.100
Input #0, avi, from '/root/Videos/111.avi':
Duration: 00:00:17.55, start: 0.000000, bitrate: 1390 kb/s
Stream #0:0: Video: mpeg4 (Simple Profile) (DIVX / 0x58564944), yuv420p, 320x240 , 1250 kb/s, 20 fps, 20 tbr, 20 tbn, 20 tbc
Stream #0:1: Audio: mp3 (U / 0x0055), 48000 Hz, stereo, fltp, 128 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (mpeg4 (native) -> mpeg4 (native))
Stream #0:1 -> #0:1 (mp3 (mp3float) -> aac (native))
Press to stop, [?] for help
Output #0, mp4, to '/root/Videos/1ew2q.mp4':
Metadata:
encoder : Lavf58.20.100
Stream #0:0: Video: mpeg4 (mp4v / 0x7634706D), yuv420p(progressive), 320x240 , q=2-31, 200 kb/s, 20 fps, 10240 tbn, 20 tbc
Metadata:
encoder : Lavc58.35.100 mpeg4
Side data:
cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s
Metadata:
encoder : Lavc58.35.100 aac
frame=351 fps=0.0 q=12.3 Lsize= 870kB time=00:00:17.50 bitrate= 407.2kbits/s speed=20x
video:587kB audio:271kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.354663%
Qavg: 1530.201x264编译的指令如下:
ffmpeg -i /root/Videos/111.avi -c:v libx264 -strict -2 /root/Videos/ee2e.mp4
页:
[1]