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

javacv和opencv对图文视频编辑-常见错误汇总

JavaCV 是一个使用 Java 语言实现的 OpenCV 和 FFmpeg 的接口库,它允许 Java 开发人员使用这些强大的多媒体处理库。然而,在使用 JavaCV 进行开发时,可能会遇到一些常见的错误。在本文中,我将介绍一些常见的 JavaCV 错误和解决方法。

1、Estimating duration from bitrate, this may be inaccurate

这个错误信息通常是由于使用的视频文件的元数据(如码率)不完整或损坏导致的。

可以尝试重新下载或获取该视频文件,或者使用其他视频工具进行转换和处理。

若视频没问题,就可以不用管,这个是正常情况,opencv在通过码率计算时长会有误差。

禁用该警告信息:

FFmpegLogCallback.set() .setDefaultLogLevel(Level.ERROR) .setCallback(new PrintStreamCallback(System.err));

2、Warning: Invalid return value 0 for stream protocol

如果不使用文件作为输入,而是使用自定义的(内存)输入流,会看到此运行时警告。

这个错误通常是从byte[]读取流时会报这个错,因为文件通常-1 \0代表结束,而字节数组没有。可以忽略,也可以禁用日志警告即可参考问题1

 3、No video output stream (Is imageWidth > 0 && imageHeight > 0 and has start() been called?)

在使用 FFmpegFrameRecorder来录像时, 排查下判断grabber.start()和recorder.start()是否调用

或者录制音频和视频混淆了,单独音频可以没有宽高,但是视频必须要先设置宽高。

4、Could not guess pixel format of image:

grabber.readImage时报错,通常是视频或图片的颜色格式不识别,可以手动设置

pixelFormat。或者对视频或图片重新处理下

5、avcodec_send_frame() error

排查下编码是否正确,比如解码和编码混淆了

6、NoClassDefFoundError

当你尝试运行 JavaCV 代码时,有时会收到以下错误信息:

 

Exception in thread "main" java.lang.NoClassDefFoundError: org/bytedeco/javacpp/...

这通常是由于 Classpath 设置不正确或缺失相关依赖引起的。为了解决该问题,你需要确保已正确配置 Classpath,并且在编译和运行时包含了所有必需的依赖项。

7、UnsatisfiedLinkError

另一个常见的错误是 UnsatisfiedLinkError。这个错误通常是由于找不到本地库文件或本地库文件不兼容导致的。为了解决这个问题,你应该检查本地库文件的路径是否设置正确,并检查本地库文件是否与你的操作系统和 JavaCV 版本兼容。

8、UnsupportedEncodingException

如果你尝试使用 JavaCV 处理视频时,有时会遇到 UnsupportedEncodingException 错误。这个错误通常是由于使用了不受支持的字符编码而导致的。为了解决这个问题,你可以尝试使用 JavaCV 支持的字符编码,如 UTF-8。

9、IllegalArgumentException

当你在代码中使用 JavaCV 提供的方法时,有时会遇到 IllegalArgumentException 错误。这个错误通常是由于参数不正确或无效导致的。为了解决这个问题,你应该仔细检查你的代码逻辑,并确保传递给方法的参数是有效的和正确的。

10、将多个音频和视频拼接后,音频慢了

可以通过插入音频帧解决,多文件拼接会出现此情况(影响因素多)。

11、生成的视频是红色

不断完善中。。。

下一篇:裸眼3D图片制作

相关文章:

  • C++学习笔记——SLT六大组件及头文件
  • Java项目:117SpringBoot动漫论坛网站
  • 前端随机验证码安全验证sdk
  • 【EMC专题】浪涌的成因与ICE 61000-4-5标准
  • 训练AI模型:寻找最优参数a和b
  • stm32学习笔记:USART串口通信
  • Day02
  • 远程登陆利器 ssh
  • C# 静态代码织入AOP组件之肉夹馍
  • 剑指offer面试题5 从尾到头打印链表
  • 第二百六十六回
  • Nano文本编辑器:轻松入门,简单实用(适用于Linux)
  • Win系统搭建Elasticsearch实现公网远程访问本地服务
  • 安卓多用户管理之Userinfo
  • 微服务架构的服务注册和发现究竟采用Nacos还是Eureka ?
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【剑指offer】让抽象问题具体化
  • Docker 笔记(2):Dockerfile
  • Facebook AccountKit 接入的坑点
  • git 常用命令
  • Java 多线程编程之:notify 和 wait 用法
  • Java 内存分配及垃圾回收机制初探
  • Java反射-动态类加载和重新加载
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • nginx 配置多 域名 + 多 https
  • Sass Day-01
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 什么软件可以剪辑音乐?
  • 实习面试笔记
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 移动端 h5开发相关内容总结(三)
  • 硬币翻转问题,区间操作
  • 在Unity中实现一个简单的消息管理器
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (三) diretfbrc详解
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一)Neo4j下载安装以及初次使用
  • (转) ns2/nam与nam实现相关的文件
  • (转)大型网站的系统架构
  • (轉貼) UML中文FAQ (OO) (UML)
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET Core 2.1路线图
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net mvc 获取url中controller和action
  • .NET MVC之AOP
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .net生成的类,跨工程调用显示注释
  • .NET中winform传递参数至Url并获得返回值或文件
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • @我的前任是个极品 微博分析
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [Android]使用Android打包Unity工程