最近在自学用java语言如何进行处理音视频。

学习时,在网上找了一段代码,测试多张图片合成一个mp4的视频。

代码是:

import org.bytedeco.ffmpeg.global.avcodec;
import org.bytedeco.ffmpeg.global.avutil;
import org.bytedeco.javacv.FFmpegFrameRecorder;
import org.bytedeco.javacv.FrameRecorder;
import org.bytedeco.javacv.Java2DFrameConverter;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.HashMap;
import java.util.Map;/*** Description:** @author 诸葛小猿* @date 2020-10-24*/
public class Test {public static void main(String[] args) throws Exception {//合成的MP4String mp4SavePath = "C:\\Users\\WuXiaoLong\\Desktop\\img\\img.mp4";//图片地址 这里面放了22张图片String img = "C:\\Users\\WuXiaoLong\\Desktop\\img";int width = 1600;int height = 900;//读取所有图片File file = new File(img);File[] files = file.listFiles();Map<Integer, File> imgMap = new HashMap<Integer, File>();int num = 0;for (File imgFile : files) {imgMap.put(num, imgFile);num++;}createMp4(mp4SavePath, imgMap, width, height);}private static void createMp4(String mp4SavePath, Map<Integer, File> imgMap, int width, int height) throws FrameRecorder.Exception {//视频宽高最好是按照常见的视频的宽高  16:9  或者 9:16FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(mp4SavePath, width, height);//设置视频编码层模式recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);//设置视频为25帧每秒recorder.setFrameRate(25);//设置视频图像数据格式recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P);recorder.setFormat("mp4");try {recorder.start();Java2DFrameConverter converter = new Java2DFrameConverter();//录制一个22秒的视频for (int i = 0; i < 22; i++) {BufferedImage read = ImageIO.read(imgMap.get(i));//一秒是25帧 所以要记录25次for (int j = 0; j < 25; j++) {recorder.record(converter.getFrame(read));}}} catch (Exception e) {e.printStackTrace();} finally {//最后一定要结束并释放资源recorder.stop();recorder.release();}}}

按照博客的介绍,各种骚操作,始终是跑不通。连续看了几篇博客,都是给一段代码,给一个jar包,一测试都是各种翻车。

学习javaVC的都知道,javaVC相关的资料在网上很少,很多写博客的也都不是专业做计算机视觉处理的,写的博客要么很简单,要么copy一段代码,参考性都不大。

这让我想起了一句话:最好的学习地址是官方的git仓库,没有之一。

那就扒出来官方git看看吧:https://github.com/bytedeco/javacv

按照官方的指导,引入maven依赖就可以了。

  <dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.4</version></dependency>

实际测试时,很打脸:

Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.ffmpeg.global.avutilat java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:348)at org.bytedeco.javacpp.Loader.load(Loader.java:1190)at org.bytedeco.javacpp.Loader.load(Loader.java:1123)at org.bytedeco.ffmpeg.avformat.Write_packet_Pointer_BytePointer_int.<clinit>(Write_packet_Pointer_BytePointer_int.java:21)at org.bytedeco.javacv.FFmpegFrameRecorder.<clinit>(FFmpegFrameRecorder.java:329)at com.wuxl.Image2Mp4.createMp4(Image2Mp4.java:48)at com.wuxl.Image2Mp4.main(Image2Mp4.java:43)

关键是我打开这个ffmpeg.jar看,是org.bytedeco.ffmpeg.global.avutil是存在的。头大。

我猜测是因为:这个jar包太大,下载不全,于是删除了本地maven仓库中的org.bytedeco的jar文件,准备重新下载一次。

下载时打开这个目录一直盯着,好家伙,这么多依赖的jar包。同时关注IDEA的下载速度。

大概半个小时后,下载停止了。代码也没有了报错提示。于是有急忙再运行一下,结果还是’Could not initialize class org.bytedeco.ffmpeg.global.avutil’。what the F。。。。。

卡住了,进行不下去了,怎么办,官方指导也不顶用吗???算了,这么难搞,不搞了。默默的点了一根烟。

不搞出来,感觉难受,这就放弃了不符合程序员该有的探索精神。。。一根烟抽完,继续。

虽然还是报错,我依然坚信还是javaCV的环境哪里有问题。于是又到github上去找答案。

看到github上有编译好的zip,决定使用zip包中的jar直接导入到项目中,不再使用maven坐标引入。

于是下载了这个755M的zip包,然后解压,删除原有的maven坐标,手动导入zip包中的所有jar包:

看到上面的6,即表示导入完成。

让后再一次运行,结果。。。。哈哈哈哈哈哈哈,成功了。欧耶!!!!

给大家看一下图片合成的mp4的结果,视频有颜色不太好,有时再做相关的调优吧。

javaCV将图片合成视频

上面是导入了zip包中的所有jar包,其实并不需要所有的,可以根据具体的开发平台(windows/linux/mac)及操作系统的位数(32/64)选择部分包导入即可。

最后,看到网上有篇博客,感觉说的很对,分享一下部分内容:

网上很多关于javacv的搭建环境的教程,然后都是大同小异先教你搭建opencv的环境,然后给你一个实例让你测试自己的opencv环境是否成功搭建。说到这里我就想骂人了,那些教需要在电脑上搭建opencv环境的,你不知道javacv0.8版本之后就不用再搭建opencv的环境了吗?麻烦你知道了就快点把博客内容改改吧,不要再耽误我们这些java开发人员的时间了好吗?我看了你们的教程可是关搭建opencv的环境就浪费了两天时间…

有问题可以关注公众号交流。

完成,收工!

传播知识,共享价值】,感谢小伙伴们的关注和支持,我是【诸葛小猿】,一个彷徨中奋斗的互联网民工。

javaCV学习-1-环境搭建及测试多张图片合成一个mp4的视频相关推荐

  1. android gdx 放进布局,Android --- libgdx android 学习初步(环境搭建及测试)

    1.首先下载libgdx文件.... 解压后会看见许多的jar文件,在Android工程中会用到gdx.jar和gdx-backend-android.jar 2.新建一个Android工程. ... ...

  2. 【Linux Mint 深度学习开发环境搭建】开发软件安装

    系列文章目录 第一章 Linux mint 深度学习开发环境搭建之Nvidia显卡相关软件安装 第二章 Linux mint 深度学习开发环境搭建之开发软件安装 第三章 Linux mint 深度学习 ...

  3. Tensorflow object detection API 搭建属于自己的物体识别模型1环境搭建与测试

    https://blog.csdn.net/dy_guox/article/details/79111949 后续博客地址(附带视频教程) ------------------------------ ...

  4. 深度学习工作站环境搭建 ubantu16.04 安装显卡驱动 CUDA8.0 cuDNN6 anaconda tensorflow1.4.0 opencv3.4 含泪总结

    深度学习工作站环境搭建 ubantu16.04 安装显卡驱动 CUDA8.0 cuDNN6 anaconda tensorflow opencv 1 安装ubantu16.04 安装时不要在线更新,在 ...

  5. IOS开发学习 IDE环境搭建教程

    IOS开发学习 IDE环境搭建教程是本文要介绍的内容,在坛子里逛了一圈,发现一篇好的文章,与友们分享一下,要有耐心的看整个过程,不多说,直接进入话题. 安装条件: 硬件:一台拥有支持虚拟技术的64位双 ...

  6. tensorflow环境下的识别食物_Tensorflow object detection API 搭建属于自己的物体识别模型——环境搭建与测试...

    1.开发环境搭建 ①.安装Anaconda 建议选择 Anaconda3-5.0.1 版本,已经集成大多数库,并将其作为默认python版本(3.6.3),配置好环境变量(Anaconda安装则已经配 ...

  7. visual studio学习python_python3从零学习-开发环境搭建之Visual Studio Code篇

    开发环境搭建之Visual Studio Code篇 上一节讲了Python环境的安装和开发环境的安装,本节再重点讲下Visual Studio Code的配置.安装 请看我上一篇文章<pyth ...

  8. hbase_学习_01_HBase环境搭建(单机)

    一.前言 本文承接上一篇:hadoop_学习_02_Hadoop环境搭建(单机)  ,主要是搭建HBase的单机环境 二.环境准备 1.说明 hbase 的下载来源有: 官方版本:http://arc ...

  9. donet 微服务开发 学习-Docker环境搭建 win7 docker 环境配置

    donet 微服务开发 学习-Docker环境搭建 win7 docker 环境配置 目的介绍 下载安装 安装 Docker Quickstart Terminal 目的介绍 donet 微服务开发 ...

最新文章

  1. 《Swift编程入门经典》
  2. 【错误记录】反射内部类报错 ( Android 使用 Hook 时反射内部类报错 )
  3. 串口 驱动 热敏打印机_菜鸟裹裹x 快麦打印机联合发布SC310,实现共享智能打印...
  4. 机器视觉 · 立体相机
  5. 字符串搜索。HOJ1530 Compound Words。
  6. 基于HTML5陀螺仪实现ofo首页眼睛移动效果
  7. java开发和structs的关系_java---springMVC与strutsMVC的区别
  8. oracle 序列的概念与使用步骤
  9. Platform平台设备驱动框架
  10. 【转】 STM32 入门教程 系统时钟 SysTick
  11. Java应用基础微专业-设计篇
  12. Url 助手类(Url Helper)
  13. C语言实现去掉字符串中重复的字符
  14. 增值税发票税控开票软件数据接口规范
  15. 聊聊nacos server的PushService
  16. PLC同时连接多个触摸屏和电视机显示器解决方案
  17. 群晖 Docker加速方案
  18. 开源的UDP加速工具UDPspeeder介绍
  19. Android如何设置背景图片
  20. netty-对象池实现Recycler用法测试

热门文章

  1. Arduino 继电器控制(Blinker+ 小度)
  2. 密码学重大里程碑!科学家暴力破解迄今最长RSA密钥,功劳却不在摩尔定律
  3. VC做无锯齿的不规则窗体
  4. mac securecrt程序无响应_IT人员必备工具SecureCRT介绍及一些实用小技巧
  5. java画的花_Java2D绘制花朵
  6. 利用递归实现JSON扁平化
  7. vue表格组件插入图片
  8. Oracle学习笔记(三)——排序分组
  9. 计算机b刊论文,计算机试卷B.doc
  10. 宜信区块链|案例解读宜信如何运用区块链双链技术重构供应链金融服务