当前位置: 首页 > wzjs >正文

织梦网站视频站长工具排名分析

织梦网站视频,站长工具排名分析,重庆城乡建设委员会证书查询官网,做物流网站的图片素材在 Java 项目中,尤其是使用了 JavaCV 或 FFmpeg 的项目中,native(本地库)指的是与操作系统和硬件架构相关的二进制文件(即动态链接库),它们不是 Java 编写的,而是 C/C 等语言编译生成…

在 Java 项目中,尤其是使用了 JavaCV 或 FFmpeg 的项目中,native(本地库)指的是与操作系统和硬件架构相关的二进制文件(即动态链接库),它们不是 Java 编写的,而是 C/C++ 等语言编译生成的。

🧩 常见的 native 文件类型


📁 在 JavaCV/FFmpeg 中常见的 native 库包括:
jniavutil
jniavcodec
jniavformat
jniavdevice
jnijava
这些都是 FFmpeg 提供的核心模块,通过 JavaCPP 封装后供 Java 调用

1 截图功能报错:

【业务】接口异常 接口接口地址:/index/api/getSnap 错误信息:Handler dispatch failed; nested exception is java.lang.UnsatisfiedLinkError: no jniavutil in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.UnsatisfiedLinkError: no jniavutil in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib

说明 JVM 在运行时无法找到 native 库(如 jniavutil.dll / libjniavutil.so),这通常是因为:
✅ 原因分析
Maven 打包插件未正确处理 native 文件
默认情况下,Spring Boot 的 spring-boot-maven-plugin 不会将 native 文件打包进最终的 .jar 文件。
即使你在依赖中引入了 windows-x86_64 或 linux-x86_64 的 native 包,它们也不会自动被提取并放入运行路径。
native 文件没有被释放到文件系统
JavaCPP 需要将 native 文件从 JAR 中提取到临时目录或指定目录加载。
如果这个过程失败,就会出现 UnsatisfiedLinkError。
平台不匹配
如果你在 Windows 上开发,但打包部署到了 Linux,而没有切换依赖的 <classifier>,也会导致找不到 native 文件。

配置pom文件:

  <!--JavaCV相关依赖--><dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>1.5.10</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>6.1.1-1.5.10</version><classifier>windows-x86_64-gpl</classifier></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>6.1.1-1.5.10</version><classifier>linux-x86_64-gpl</classifier></dependency><!-- Linux x86_64 示例 --><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg-platform</artifactId><version>6.1.1-1.5.10</version></dependency>

打包:

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!-- 强制 spring-boot 使用 ZIP layout 来打包 --><layout>ZIP</layout><includes><include><groupId>org.bytedeco</groupId></include></includes><!-- 可选:保留 system scope --><includeSystemScope>true</includeSystemScope></configuration>
</plugin>

2 linux gcc版本过低。

重新安装 devtoolset-9

要求 4.9以上

# 备份原有 repo 文件
sudo mv /etc/yum.repos.d/ /etc/yum.repos.d.bak/
sudo mkdir -p /etc/yum.repos.d/# 下载阿里云源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo# 可选:添加 SCL 源
sudo tee /etc/yum.repos.d/CentOS-SCLo-scl.repo << 'EOL'
[centos-sclo-rh]
name=CentOS-7 - SCLo RH
baseurl=http://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
gpgcheck=0
enabled=1[centos-sclo-sclo]
name=CentOS-7 - SCLo SCLO
baseurl=http://mirrors.aliyun.com/centos/7/sclo/x86_64/sclo/
gpgcheck=0
enabled=1
EOL# 清理并重建缓存
sudo yum clean all
sudo yum makecache
sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-9

安装好gcc 9.0才可以执行ffmpeg

启动服务

nohup java  -Dloader.include=org.bytedeco -Dloader.explode=true -jar -Xms128m -Xmx1024m  j-media-server.jar /dev/null 2>&1 &

继续报错:

【业务】接口异常 接口接口地址:/index/api/getSnap 错误信息:Handler dispatch failed; nested exception is java.lang.UnsatisfiedLinkError: no jniavutil in java.library.path: /opt/rh/devtoolset-9/root/usr/lib64:/opt/rh/devtoolset-9/root/usr/lib:/opt/rh/devtoolset-9/root/usr/lib64/dyninst:/opt/rh/devtoolset-9/root/usr/lib/dyninst:/opt/rh/devtoolset-9/root/usr/lib64:/opt/rh/devtoolset-9/root/usr/lib:/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.UnsatisfiedLinkError: no jniavutil in java.library.path: /opt/rh/devtoolset-9/root/usr/lib64:/opt/rh/devtoolset-9/root/usr/lib:/opt/rh/devtoolset-9/root/usr/lib64/dyninst:/opt/rh/devtoolset-9/root/usr/lib/dyninst:/opt/rh/devtoolset-9/root/usr/lib64:/opt/rh/devtoolset-9/root/usr/lib:/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib

解决方案:手动提取 native 文件 + 指定路径
步骤一:从 Maven 中提取 Linux 兼容的 .so 文件
你当前 pom.xml 引用了以下依赖:

<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>ffmpeg</artifactId>
<version>6.1.1-1.5.10</version>
<classifier>linux-x86_64-gpl</classifier>
</dependency>

C:\Users\你的用户名\.m2\repository\org\bytedeco\ffmpeg\6.1.1-1.5.10\
找到:

ffmpeg-6.1.1-1.5.10-linux-x86_64-gpl.jar

解压:

unzip ffmpeg-6.1.1-1.5.10-linux-x86_64-gpl.jar -d ffmpeg_native/

上传到目录:

/usr/local/zlmwebrtc/natives/

最后实在不行直接在docker 运行吧

FROM centos:8# 安装必要依赖(可选)
RUN dnf install -y java-11-openjdk ffmpeg# 创建 native 文件存放目录
COPY natives /opt/natives# 拷贝 jar 包
COPY target/j-media-server.jar /app.jar# 设置 JVM 启动参数
ENTRYPOINT ["java", \"-Dloader.include=org.bytedeco", \"-Djava.library.path=/opt/natives", \"-Xms128m", "-Xmx1024m", \"-jar", "/app.jar"]

# 构建镜像
docker build -t j-media-server .# 创建本地目录存放 native 文件(确保 libjniavutil.so 等存在)
mkdir -p ./natives# 将 Windows 上 Maven 中提取出的 .so 文件拷贝到此目录
cp ffmpeg-6.1.1-1.5.10-linux-x86_64-gpl/libjniavutil.so ./natives/
cp ffmpeg-6.1.1-1.5.10-linux-x86_64-gpl/libjniavcodec.so ./natives/
cp ffmpeg-6.1.1-1.5.10-linux-x86_64-gpl/libjniavformat.so ./natives/
...# 启动容器
docker run -d \--name jmedia \-v $(pwd)/natives:/opt/natives \-p 8899:8899\j-media-server

完美,又开始进入新的docker 的坑

http://www.dtcms.com/wzjs/432447.html

相关文章:

  • 想学做网站可以在哪学杭州seo顾问
  • 中国建设银行网站类型分析广州王牌seo
  • 郑州企业网站优化排名宣传软文范例
  • 做黄色网站被抓了怎么处理seo线下培训课程
  • 廊坊网站建设哪家好优化营商环境发言材料
  • 钓鱼网站制作者软文广告是什么
  • wordpress 分类 文章数量在哪里可以免费自学seo课程
  • 商业网站网站建设营销方式和渠道
  • 老域名做网站新闻头条今日要闻最新
  • 中小学网站建设建议吸引人的营销标题
  • 建设电影会员网站南宁网站推广公司
  • 贵阳建设厅网站北京seo百科
  • wordpress点击慢百度seo排名优化联系方式
  • 做网站月度总结西地那非片的正确服用方法
  • 互联网网站建设公司组织架构青岛 google seo
  • 可以做ps兼职的网站网站优化排名易下拉稳定
  • 长沙全网覆盖的网络推广宁波seo怎么推广
  • 做一个网站得多少钱百度竞价被换着ip点击
  • 推广 高端网站建设网络销售培训学校
  • 最新创建的网站我想做网络推广找谁
  • 开封公司做网站全国疫情最新情况
  • 网站开发阶段怎么做测试网站怎么接广告
  • 南京商城网站开发设计seo的基本工作内容
  • wordpress建站怎么学下载百度 安装
  • 北京响应式网站建设推荐搜索大全
  • dw网页设计css样式廊坊关键词优化报价
  • 网站运行模式外贸独立站怎么建站
  • 北京做网站找谁网站ui设计
  • 百度app智能小程序seo优化公司排名
  • 不备案怎么做网站制作网页的流程步骤