ffmpeg安装h264视频编码遇到的问题

一、 背景

压缩手机上传的视频,发现部分视频浏览器(chrome)播放有声音没有图像

二、 问题

2.1 原视频在浏览器可以播放,压缩后不行

原因: 浏览器只支持h264\h265的视频格式编码。转码前视频编码为h264 转码后变为了mpeg4。默认ffmpeg并没有带h264编码器。

$ ffempg -i xxx.mp4 

2.png

解决办法:重新编译安装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版本导致。

微信截图_20221021152341.png

解决办法: 从/etc/ld.so.conf.d/nginx.conf把老的lib库删掉就好了

添加新评论


Fatal error: Uncaught TypeError: Argument 1 passed to Typecho_Common::exceptionHandle() must be an instance of Exception, instance of Error given in /data/www/blognew/var/Typecho/Common.php:251 Stack trace: #0 [internal function]: Typecho_Common::exceptionHandle(Object(Error)) #1 {main} thrown in /data/www/blognew/var/Typecho/Common.php on line 251