CentOS系统下使用maven编译javaCPP-ffmpeg
来源:互联网 发布:python基础教程 知乎 编辑:程序博客网 时间:2024/04/29 04:54
由于想要利用javaCV调用ffmpeg的API,遇到了一个很奇怪的错误,在网上查了半天,真的很费力,最终问题还是没有解决,自己被一个问题困扰到了,却没有发现或许这个问题并不是一个问题,现在想想还真是有点郁闷,编译了一天还是没有编译成功。之前看的是(http://www.ibm.com/developerworks/cn/java/j-lo-cpp/)这篇博文的教程,说的很简单,但是中间遇到的问题还是很多的。
1、编译过程中使用mvn install --projects ffmepg命令编译,看到别人说在CentOS系统中,需要自己编译javaCPP-presets这个项目,然后自己就傻傻的跑去编译ffmpeg了,虽然目标不是很明确。编译ffmpeg的原因是,因为在程序中,发现了这样一个错误。
Exception in thread "Thread-2" java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.javacpp.avutilat java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)<span style="white-space:pre"></span>at org.bytedeco.javacpp.Loader.load(Loader.java:464)<span style="white-space:pre"></span>at org.bytedeco.javacpp.Loader.load(Loader.java:409)<span style="white-space:pre"></span>at org.bytedeco.javacpp.avcodec$AVPacket.<clinit>(avcodec.java:1559)<span style="white-space:pre"></span>at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:149)<span style="white-space:pre"></span>at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:126)<span style="white-space:pre"></span>at javaCVTest1.GrabberShow.convert(GrabberShow.java:34)<span style="white-space:pre"></span>at javaCVTest1.GrabberShow.run(GrabberShow.java:64)<span style="white-space:pre"></span>at java.lang.Thread.run(Unknown Source)
google了半天还是没有找到解决的方法,所以傻傻的认为,只要自己能够编译ffmpeg成功,自己就能解决这个问题。
2、接下来就是苦逼的编译之路,下载好javacpp-presents源码,解压然后cd进去,然后使用mvn install --projects ffmpeg这条命令,然后就开始编译了。然后就开始报错了,maven就没怎么用过,感觉自己太渣了。说一下最主要的问题吧。
主要的问题是,在编译过程中会遇到avx2这个指令集(磨人的小妖精),由于我使用的设备不支持这个指令集所以编译过不去。主要是因为包含avx2这个指令集的源文件不能编译通过。所以我修改了xx/javacpp-presets/ffmpeg/cppbuild.sh脚本中的一些命令,因为avx2编译出错实在libvpx这个目录下的所以修改cppbuild.sh中对应该目录的执行命令语句
cd ../libvpx-$VPX_VERSION./configure --prefix=$INSTALL_PATH --enable-static --enable-pic --disable-examples --disable-avx2 --disable-unit_tests --target=x86_64-linux-gcc --as=yasmmake -j $MAKEJmake install里面的--disable-avx2 --disable-unit_tests是我自己加的,目的是想要跳过avx2的编译过程,还有测试过程,因为测试过程中也会涉及到avx2指令集的一些参数,添加这两个参数之后,libvpx终于可以编译过去了,但是在编译ffmpeg中的libavcodec.so这个库时,里面又开始出现了avx2的相关参数,看到这里真的要疯了,又报错了,生无可恋,有大神看到的话可以帮忙看看,求帮助啊。
libavcodec/libavcodec.so: undefined reference to `vpx_sub_pixel_variance64x64_avx2'libavcodec/libavcodec.so: undefined reference to `vpx_variance32x32_avx2'libavcodec/libavcodec.so: undefined reference to `vpx_fdct32x32_rd_avx2'libavcodec/libavcodec.so: undefined reference to `vpx_mse16x16_avx2'libavcodec/libavcodec.so: undefined reference to `vpx_variance32x16_avx2'libavcodec/libavcodec.so: undefined reference to `vpx_get16x16var_avx2'libavcodec/libavcodec.so: undefined reference to `vpx_sad64x32_avg_avx2'collect2: error: ld returned 1 exit status然后我把ffmpeg的configure配置命令也加上了--disable-avx2,但是还是出现了上边的问题,然后我又加上了--disable-avcodec这个参数结果出现了下边这个错误,我就崩溃了。
If you think configure made a mistake, make sure you are using the latestversion from Git. If the latest version fails, report the problem to theffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.Include the log file "config.log" produced by configure as this will helpsolve the problem.[INFO] ------------------------------------------------------------------------[INFO] BUILD FAILURE哎,真是千难万难啊。
0 0
- CentOS系统下使用maven编译javaCPP-ffmpeg
- CentOS 下通过 JavaCPP 调用 FFMPEG
- centos下ffmpeg编译安装
- centos 在CentOS下编译FFmpeg
- Windows 系统下使用 MinGW + MSYS + GCC 编译 FFMPEG
- Windows 系统下使用 MinGW + MSYS + GCC 编译 FFMPEG
- 在windows XP系统下编译和使用ffmpeg
- Centos 6.0 虚拟机下编译ffmpeg
- FFmpeg 学习之 centos 下编译配置
- linux下编译使用ffmpeg
- iOS 下编译使用FFmpeg
- centos x64系统下的boost编译和使用
- JavaCPP 技术使用经验总结
- JavaCPP 技术使用经验总结
- windows系统下编译最新版本ffmpeg
- 使用yum在centos下安装ffmpeg
- CentOS 编译 ffmpeg
- centos编译ffmpeg x264
- PyCharm中使用virtualenv进行django开发
- 数据结构与算法:排序
- appium自动测试化相关
- mybatis和hibernate创建会话的简单区别
- 在设置zookeeper集群中出现的问题
- CentOS系统下使用maven编译javaCPP-ffmpeg
- RecyclerView 实现瀑布流交错效果,并使最后一行子View高度占满RecyclerView
- 一个隐藏多年的bug
- mysql修改表的存储引擎
- eclispe java 自动生成Junit测试类
- android 键盘中如何加入一个Rupee货币的符号
- Android 简介
- Maven学习总结(19)——深入理解Maven相关配置
- 项目:程序填空