Centos下 ffmpeg 和opencv一起配合处理视频
默認安裝的opencv 很多視頻格式打不開,cvCreateFileCapture返回值為NULL,為了解決此問題,需要安裝視頻編解碼的庫,我選擇安裝ffmpeg,我在windows下也用過這個庫。
1、下載ffmpeg
從svn上下載,需要先安裝svn
yum install subversion
svn checkout svn://svn.mplayerhq.hu//ffmpeg/trunk ffmpeg
下載下來的目錄下多了ffmpeg文件夾
2、安裝ffmpeg
cd ffmpeg
./configure --enable-shared --enable-gpl
make install?
出錯,出錯信息如下:
libavcodec/x86/h264_qpel_mmx.c:1294: Error: suffix or operands invalid for `cmp'
應該是cmp函數的問題,網上說這個和gcc版本有關系,我之前裝chrome把gcc版本更新為4.8.1,對于ffmpeg來說版本太高了,需要低版本的gcc
下載了gcc-4.3.6,安裝上,然后再編譯ffmpeg
./configure --enable-shared --enable-swscale --enable-gpl?--disable-yasm
由于yasm 老是報錯,我們不需要就直接給disable了。
make
make install
此時在/usr/local/include下面出現
libavcodec ? ?libavdevice??? libavformat??? libavutil???? libswscal
在這個目錄下新建立一個ffmpeg文件夾,這樣做的原因是,OPENCV在配置時會在這個文件下去尋找需要的頭文件。
cd? /usr/local/include
mkdir ffmpeg?
cp lib*/* ?ffmpeg/ ?#由于我的include下面沒有其他以lib開頭的文件所以可以這樣
在命令行輸入ffmpeg,出錯:
ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory
查找?libavdevice.so.52所在位置,
ldd `which ffmpeg`
libavdevice.so.52 => not found
find /usr/local/lib | grep 'libavdevice'
所在/usr/local/lib下,將此路徑加入環境變量
vim /etc/ld.so.conf
此時里面已經有了/usr/local/lib,卻沒有找到
輸入ldconfig
然后再輸入ffmpeg生效了,應該是每當裝了一個東西都要ldconfig,裝完opencv也是一樣,要不然報錯找不到動態鏈接庫
3、重新編譯opencv
將原來的opencv刪掉,重新編譯
cmake CMakeLists.txt
make?
此處出錯,
cc1plus: 錯誤:無法識別的命令行選項“-Wno-narrowing”
cc1plus: 錯誤:無法識別的命令行選項“-Wno-delete-non-virtual-dtor”
cc1plus: 錯誤:無法識別的命令行選項“-Wno-unnamed-type-template-args”
make[2]: *** [modules/core/CMakeFiles/opencv_core.dir/src/rand.cpp.o] 錯誤 1
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] 錯誤 2
make: *** [all] 錯誤 2
后來我不但將/usr/local/lib和/usr/local/include下面有關opencv的刪掉也把之前的編譯的opencv的文件刪除,重新解壓進行編譯沒有報錯,應該是之前編譯是用的gcc高版本,而現在gcc版本低了鏈接就發生了錯誤。
cvCreateFileCapture返回值不為NULL了
總結
以上是生活随笔為你收集整理的Centos下 ffmpeg 和opencv一起配合处理视频的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Centos6.5 下安装opencv
- 下一篇: linux 编译C++错误整理