概述
本想直接将opencv 交叉编译移植到zedboard上,但是一直不成功。所以决定先在PC下尝试。
之前运行opencv应用程序file.cpp,运行到函数capture = cvCaptureFromAAVI()AVIfile;时总是获取不到视频,返回NULL
原因也很简单,没有安装ffmpeg
ffmpeg简单的说就是视频编解码的工具,里面包含有视频音频处理库
包含的库有
libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能
libavcodec:用于各种类型声音/图像编解码
libavutil :包含一些公共的工具函数
libswscale:用于视频场景比例缩放、色彩映射转换
libpostproc:用于后期效果处理
ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等
ffsever:一个 HTTP 多媒体即时广播串流服务器
ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示。ffplay命令依赖与SDL库,所以没有SDL库或者ffplay无法使用的需要先安装SDL库
安装ffmpeg
源码目录下
./configure --enable-shared --enable-gpl --enable-swscale --disable-yasm
尽量不要添加用户安装目录--prefix=xxxx
因为自己添加的库以及头文件目录opencv编译不一定能找到,虽然我也在/etc/ld.so.config.conf中添加目录,但出错还是显示动态链接库没有找到,需要用pkg-config来找到.pc文件,有点麻烦。所以直接默认安装就好了。
make
make install
安装好后可用ffplay xxxx.avi测试。如果可以看到视频则表示已安装好。
如果只调出视频窗口无法观看视频,则可以是因为没有安装x264.x264是ffmpeg的依赖包,他不会自动被装上,但是也不会报错,所以还是需要小心的。
这时再在opencv源码目录下cmake 查看Video IO中FFMPEG各个库是否是YES,如果是则表示已完成对FFMPEG的支持。如果没有可能是库或者头文件没有找到。
如果出现错误
error while loading shared library:xxxx.so.0 could not open shared object file:no such file or directory表示系统找不到该链接库
在/etc/ld.so.conf.d/下修改目录
执行/sbin/ldconfig -v更新配置
对opencv源码make make install
再运行应用程序就可以获取视频数据了。
还没完成对zedboard的移植
正在尝试在zedboard上源码安装
参考
https://www.linuxidc.com/Linux/2012-05/60233.htm
https://hi.baidu.com/shenhua_boss_/item/bf335d1a42fab31de65c3693
最后
以上就是甜美鱼为你收集整理的ffmpeg opencv 指定_OpenCV配置(基于ffmpeg)的全部内容,希望文章能够帮你解决ffmpeg opencv 指定_OpenCV配置(基于ffmpeg)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复