网上有人说这是opencv和ffmpeg之间的bug,ffmpeg安装后的头文件以前是放在ffmpeg目录下的,后来改成分开放置在libavformat/ libcodec/ 等几个目录下,而opencv是在ffmpeg/目录下寻找头文件。
所以在/usr/include/下新建一个目录ffmpeg/,把ffmpeg所有头文件复制放这个目录下。
sudo mkdir /usr/include/ffmpeg
sudo cp /usr/include/libavcodec/* /usr/include/ffmpeg
sudo cp /usr/include/libavcore/* /usr/include/ffmpeg
sudo cp /usr/include/libavdevice/* /usr/include/ffmpeg
sudo cp /usr/include/libavfilter/* /usr/include/ffmpeg
sudo cp /usr/include/libavformat/* /usr/include/ffmpeg
sudo cp /usr/include/libavutil/* /usr/include/ffmpeg
问题解决。