给QQ机器人接入了ChatGPT , 想要使用Edge TTS 给机器人接入语音需要 FFmpeg 环境,所以在服务器上安装了 FFmpeg,但在过程中遭遇了很多错误,最终通过搜索和借助ChatGPT 得以解决。
如果了解 ffmpeg 原理和使用参考:
https://ffmpeg.xianwaizhiyin.net/
https://www.cnblogs.com/v3ucn/p/17186731.html
安装依赖
yum update
yum install -y autoconf automake cmake freetype-devel gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel
下载 ffmpeg
下载地址:https://www.ffmpeg.org/releases/
我下载的是 ffmpeg 6.0
wget https://www.ffmpeg.org/releases/ffmpeg-6.0.tar.gz
tar xzf ffmpeg-6.0.tar.gz
安装 ffmpeg
解压后进入ffmpeg目录编译和安装
./configure --enable-shared
make
make install
如果不出意外执行 ffmpeg 就可以看到安装成功了。
报错问题
但是偏偏就是出了点意外,在执行./configure --enable-shared 时出现 nasm/yasm not found or too old. Use --disable-x86asm for a crippled build. 错误,这是因为缺少nasm或yasm程序或版本过旧,所以要安装 nasm
yum install nasm
解决完这个问题,在make 的时候又报出了 Failed to set locale, defaulting to C error: rpmdb: BDB0113 Thread/process 12631/140605682448192 failed: BDB1507 Thread died in Berkeley DB library error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery error: cannot open Packages index using db5 - (-30973) error: cannot open Packages database in /var/lib/rpm CRITICAL:yum.main: Error: rpmdb open failed
错误。
看报错是RPM数据库(/var/lib/rpm)出现了错误,最直接干脆的办法就是删除数据库重新构建
删除 RPM 数据库文件
rm -f /var/lib/rpm/__db*
重新构建
db_verify /var/lib/rpm/Packages
如果依然不行还可以使用rpm 工具恢复数据库
rpm --rebuilddb
解决完问题,继续make 安装就行了,如果安装完使用 ffmpeg 命令发现没有生效,且出现 ffmpeg: error while loading shared libraries: libavdevice.so.60: cannot open shared object file: No such file or directory
错误,说明 ffmpeg 没有加载成功,需要使用下面命令更新下缓存,执行完命令系统会重新扫描共享的库并更新缓存。
sudo ldconfig
安装成功图