javaCV学习-1-环境搭建及测试多张图片合成一个mp4的视频
最近在自学用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的视频相关推荐
- android gdx 放进布局,Android --- libgdx android 学习初步(环境搭建及测试)
1.首先下载libgdx文件.... 解压后会看见许多的jar文件,在Android工程中会用到gdx.jar和gdx-backend-android.jar 2.新建一个Android工程. ... ...
- 【Linux Mint 深度学习开发环境搭建】开发软件安装
系列文章目录 第一章 Linux mint 深度学习开发环境搭建之Nvidia显卡相关软件安装 第二章 Linux mint 深度学习开发环境搭建之开发软件安装 第三章 Linux mint 深度学习 ...
- Tensorflow object detection API 搭建属于自己的物体识别模型1环境搭建与测试
https://blog.csdn.net/dy_guox/article/details/79111949 后续博客地址(附带视频教程) ------------------------------ ...
- 深度学习工作站环境搭建 ubantu16.04 安装显卡驱动 CUDA8.0 cuDNN6 anaconda tensorflow1.4.0 opencv3.4 含泪总结
深度学习工作站环境搭建 ubantu16.04 安装显卡驱动 CUDA8.0 cuDNN6 anaconda tensorflow opencv 1 安装ubantu16.04 安装时不要在线更新,在 ...
- IOS开发学习 IDE环境搭建教程
IOS开发学习 IDE环境搭建教程是本文要介绍的内容,在坛子里逛了一圈,发现一篇好的文章,与友们分享一下,要有耐心的看整个过程,不多说,直接进入话题. 安装条件: 硬件:一台拥有支持虚拟技术的64位双 ...
- tensorflow环境下的识别食物_Tensorflow object detection API 搭建属于自己的物体识别模型——环境搭建与测试...
1.开发环境搭建 ①.安装Anaconda 建议选择 Anaconda3-5.0.1 版本,已经集成大多数库,并将其作为默认python版本(3.6.3),配置好环境变量(Anaconda安装则已经配 ...
- visual studio学习python_python3从零学习-开发环境搭建之Visual Studio Code篇
开发环境搭建之Visual Studio Code篇 上一节讲了Python环境的安装和开发环境的安装,本节再重点讲下Visual Studio Code的配置.安装 请看我上一篇文章<pyth ...
- hbase_学习_01_HBase环境搭建(单机)
一.前言 本文承接上一篇:hadoop_学习_02_Hadoop环境搭建(单机) ,主要是搭建HBase的单机环境 二.环境准备 1.说明 hbase 的下载来源有: 官方版本:http://arc ...
- donet 微服务开发 学习-Docker环境搭建 win7 docker 环境配置
donet 微服务开发 学习-Docker环境搭建 win7 docker 环境配置 目的介绍 下载安装 安装 Docker Quickstart Terminal 目的介绍 donet 微服务开发 ...
最新文章
- 《Swift编程入门经典》
- 【错误记录】反射内部类报错 ( Android 使用 Hook 时反射内部类报错 )
- 串口 驱动 热敏打印机_菜鸟裹裹x 快麦打印机联合发布SC310,实现共享智能打印...
- 机器视觉 · 立体相机
- 字符串搜索。HOJ1530 Compound Words。
- 基于HTML5陀螺仪实现ofo首页眼睛移动效果
- java开发和structs的关系_java---springMVC与strutsMVC的区别
- oracle 序列的概念与使用步骤
- Platform平台设备驱动框架
- 【转】 STM32 入门教程 系统时钟 SysTick
- Java应用基础微专业-设计篇
- Url 助手类(Url Helper)
- C语言实现去掉字符串中重复的字符
- 增值税发票税控开票软件数据接口规范
- 聊聊nacos server的PushService
- PLC同时连接多个触摸屏和电视机显示器解决方案
- 群晖 Docker加速方案
- 开源的UDP加速工具UDPspeeder介绍
- Android如何设置背景图片
- netty-对象池实现Recycler用法测试