前段时间用A20做摄像头的读取,显示,录像等,用的是ffmpeg+v4l2来做的。那么,最近需要做一个在PC端用网络查看的,也需要实现这样的功能。
结果发现在ubuntu下面进行配置ffmpeg库导入的方法失效了,总是提示各种函数未定义,类似于这样的:undefined reference to `avcodec_register_all'
后来有幸找到了一个别人的工程,试验了半天,终于找到了方法。下面写一写,给朋友们介绍下这个解决方案:
1、windows平台自己不想编译ffmpeg就可以直接到这个地址来下载别人编译好的库:
http://ffmpeg.zeranoe.com/builds/
在这里,我们开发的时候需要下载2个包,一个是dev包,一个是share包。为什么需要2个包呢,后文会提到;我用的是32bit的包,因为我下载的Qt是Mingw-32的。如果你是64的话,可以下载64bit的包,这是我猜得。反正64bit的包,在我的电脑上面就不能用,编译都会失败。
2、将dev包解压缩后放到我们的Qt工程目录下面,然后在pro文件里面添加这样类似的内容:
INCLUDEPATH += ffmpeg-20150507-git-9253cc4-win32-dev/include
LIBS += ffmpeg-20150507-git-9253cc4-win32-dev/lib/libavcodec.dll.a \
ffmpeg-20150507-git-9253cc4-win32-dev/lib/libavfilter.dll.a \
ffmpeg-20150507-git-9253cc4-win32-dev/lib/libavformat.dll.a \
ffmpeg-20150507-git-9253cc4-win32-dev/lib/libswscale.dll.a \
ffmpeg-20150507-git-9253cc4-win32-dev/lib/libavutil.dll.a \
ffmpeg-20150507-git-9253cc4-win32-dev/lib/libavdevice.dll.a \
ffmpeg-20150507-git-9253cc4-win32-dev/lib/libpostproc.dll.a \
ffmpeg-20150507-git-9253cc4-win32-dev/lib/libswresample.dll.a \
3、点击qt creator的项目,然后去除概要这一栏里面的shadow build这个选项,会导致编译出错
4、现在可以进行编译了,编译会成功,不过运行的时候,只要有av_register_all()这个函数,程序就会运行不起来,会异常退出,这是因为没有share库。
5、把我们下载的share/bin目录里面的所有dll库都拷贝到我们生成的exe文件的目录下。
6、再次运行,程序就可以运行起来了
总结:那么,在windows下面使用Qt添加ffmpeg的方法就介绍到这了,希望看到的人能帮得到你。