一、卸载ffmpeg
ffmpeg安装在/usr/local/目录下
sudo mv /usr/local/bin/ffmpeg /usr/local/bin/ffmpeg_old
使用sudo apt-get remove --purge ffmpeg
二、报错:error: request for member 's_addr' in something not a structure or union mreqs.imr_multiaddr.s_addr = ((struct sockaddr_in *)addr)->sin_addr.s_addr;
很明显不存在 ip_mreq_source 这个结构体, 在编译的时候把 HAVE_STRUCT_IP_MREQ_SOURCE 设置成 0 即可。
我猜测新版的 FFmpeg 是使用 clang 编译的, 新版的 FFmpeg 里使用了 这个结构体, 但是现在使用的是 gcc 编译的。 编译系统中 gcc 没有这个结构体。 当然使用了 clang 就不会出现这个问题。说明新版本增加了新的内容, 老版本可能会没有, 这也说明了新的肯定是兼容老的, 但老的不可能有新版本的新内容
错入方式如下:
sed -i '' 's/HAVE_STRUCT_IP_MREQ_SOURCE 1/HAVE_STRUCT_IP_MREQ_SOURCE 0/g' config.h
正确写法
sed -i 's/HAVE_LRINT 1/HAVE_LRINT 0/g' config.h
修改config
./configure --disable-static --enable-shared --enable-gpl --enable-version3 --enable-no