获取视频截图--javacv之前在相关文章评论过,有人问我当中遇到的问题,所以写出来 maven依赖 <dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>0.8</version>
</dependency>
代码很多,我也是网上找的,这里就不粘出来了,主要记录一下问题 代码在windows环境下完全没用问题,如果是在win环境下编译的放到liunx下跑会报错: java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.javacpp.avutil
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.bytedeco.javacpp.Loader.load(Loader.java:390)
at org.bytedeco.javacpp.Loader.load(Loader.java:358)
at org.bytedeco.javacpp.avformat$AVFormatContext.<clinit>(avformat.java:2539)
at org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(FFmpegFrameGrabber.java:383)
at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:377)
at com.example.Application.convert(Application.java:53)
at com.example.Application.run(Application.java:103)
at org.springframework.boot.SpringApplication.runCommandLineRunners(SpringApplication.java:674)
at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:693)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:322)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:969)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:958)
at com.example.Application.main(Application.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)
at java.lang.Thread.run(Thread.java:745)
仔细观察后,pom引的是win下的jar,所以需在liunx下编译,之后依然报错 仔细发现每次重启项目后第一次错误信息是: java.lang.UnsatisfiedLinkError: no jniavdevice in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) ~[?:1.8.0_144]
at java.lang.Runtime.loadLibrary0(Runtime.java:870) ~[?:1.8.0_144]
...
Caused by: java.lang.UnsatisfiedLinkError: /tmp/javacpp777320859500247/[图片]libjniavdevice.so: [图片]libXv.so.1: cannot open shared object file: No such file or directory
而第二次之后错误信息才是 java.lang.NoClassDefFoundError
应该是第一次启动需要读取加载环境,而我环境缺少相应类库,根据错误信息可以发现是我liunx环境问题,缺少libXv.so.1这个文件,网上搜一下,安装了即可 如果还有问题看一下jvm配置,线程堆的大小 -Xss256k
重新启动,即可成功! 这个是截取视频的代码原作者:点击打开链接 |