一、 背景
压缩手机上传的视频,发现部分视频浏览器(chrome)播放有声音没有图像
二、 问题
2.1 原视频在浏览器可以播放,压缩后不行
原因: 浏览器只支持h264\h265的视频格式编码。转码前视频编码为h264 转码后变为了mpeg4。默认ffmpeg并没有带h264编码器。
$ ffempg -i xxx.mp4
解决办法:重新编译安装ffpemg, 增加h264支持编码
$ wget https://johnvansickle.com/ffmpeg/release-source/libx264-git.tar.xz
$ tar -xvf libx264-git.tar.xz
$ cd libx264-git/
$ sudo ./configure --enable-shared
$ sudo make -j4
$ sudo make install
$ sudo ./configure --enable-shared --prefix=/usr/local/ffmpeg --enable-libx264 --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --enable-gpl
$ sudo make -j4
$ sudo make install
2.2 error while loading shared libraries: libavdevice.so.58
原因: 依赖库没有加到系统目录中,导致找不到依赖(其他so找不到也可以类似解决)
解决办法:
$ find / -name libavdevice.so.58 # 找到依赖库的路径
$ echo "/usr/local/ffmpeg/lib" >> /etc/ld.so.conf.d/nginx.conf # nginx.conf是具体看服务器上
$ ldconfig
2.3 Unknown encoder 'libx264'
原因: 一般是因为libx264库没有安装成功,但是我确认了是安装成功的。后来发现原来是机器上有两个ffmpeg版本导致。
解决办法: 从/etc/ld.so.conf.d/nginx.conf把老的lib库删掉就好了