package com.avi; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.Comparator; import org.jim2mov.core.DefaultMovieInfoProvider; import org.jim2mov.core.ImageProvider; import org.jim2mov.core.Jim2Mov; import org.jim2mov.core.MovieInfoProvider; import org.jim2mov.core.MovieSaveException; import org.jim2mov.utils.MovieUtils; /** * 图片与视频转换工具类 * * @author Administrator */ public class PicToAviUtil { /** * 将图片转换成视频 * @param jpgDirPath jpg图片文件夹绝对路径 * @param aviFileName 生成的avi视频文件名 * @param fps 每秒帧数 * @param mWidth 视频的宽度 * @param mHeight 视频的高度 * @throws Exception */ public static void convertPicToAvi(String jpgDirPath, String aviFileName, int fps, int mWidth, int mHeight) { // jpgs目录放置jpg图片,图片文件名为(1.jpg,2.jpg...) final File[] jpgs = new File(jpgDirPath).listFiles(); if(jpgs==null || jpgs.length==0){ return; } // 对文件名进行排序(本示例假定文件名中的数字越小,生成视频的帧数越靠前) Arrays.sort(jpgs, new Comparator<File>() { public int compare(File file1, File file2) { String numberName1 = file1.getName().replace(".jpg", ""); String numberName2 = file2.getName().replace(".jpg", ""); return new Integer(numberName1) - new Integer(numberName2); } }); // 生成视频的名称 DefaultMovieInfoProvider dmip = new DefaultMovieInfoProvider(aviFileName); // 设置每秒帧数 dmip.setFPS(fps>0?fps:3); // 如果未设置,默认为3 // 设置总帧数 dmip.setNumberOfFrames(jpgs.length); // 设置视频宽和高(最好与图片宽高保持一直) dmip.setMWidth(mWidth>0?mWidth:1440); // 如果未设置,默认为1440 dmip.setMHeight(mHeight>0?mHeight:860); // 如果未设置,默认为860 try { new Jim2Mov(new ImageProvider() { public byte[] getImage(int frame) { try { // 设置压缩比 return MovieUtils.convertImageToJPEG((jpgs[frame]), 1.0f); } catch (IOException e) { System.err.println(e); } return null; } }, dmip, null).saveMovie(MovieInfoProvider.TYPE_AVI_MJPEG); } catch (MovieSaveException e) { System.err.println(e); } System.out.println("create avi success."); } /** * main * @param args * @throws Exception */ public static void main(String[] args) throws Exception { String jpgDirPath = "e:/record/"; // jpg文件夹路径 String aviFileName = "test.avi"; // 生成的avi视频文件名(生成路径为本工程) int fps = 3; // 每秒播放的帧数 int mWidth = 1440; // 视频的宽度 int mHeight = 860; // 视频的高度 PicToAviUtil.convertPicToAvi(jpgDirPath, aviFileName, fps, mWidth, mHeight); } }
需要两个jar支持:
Jim2mov.jar、jmf.jar。
生成的avi文件在工程目录下。
相关推荐
在IT行业中,将图片转换为视频是一项常见的任务,特别是在多媒体处理、动画制作或者数据可视化等领域。Java作为一种跨平台的编程语言,提供了丰富的库和API来处理这类任务。本篇文章将详细探讨如何使用Java实现图片...
为了实现这个功能,开发者通常需要编写一段Java代码,以下是一个简单的示例,使用JavaCV库将图片转换为视频: ```java import org.bytedeco.javacpp.opencv_core.IplImage; import org.bytedeco.javacv....
2. **帧序列创建**:将每张图片转换为FFmpeg可识别的帧格式,通常为JPEG或PNG。 3. **视频参数设置**:定义视频的参数,如帧率(fps)、分辨率、编码器等。 4. **调用FFmpeg**:通过Java FFmpeg Bridge或Xuggler,...
java实现可以获取视频中某一帧的图片,并将图片保存至本地,自定义设置截取图片的宽度和高度,获取视频的总帧数,视频总时长。
JavaCV 是一个 Java 平台上的计算机视觉...以上就是关于“Javacv 处理视频,提取成帧图片,生成 gif”这一主题的主要知识点。了解这些概念后,你可以根据具体的项目需求编写相应的代码来实现视频处理和 GIF 生成功能。
Java 使用 FFmpeg 截取视频图片是一个常见的任务,它涉及到多媒体处理、命令行操作和跨平台编程。FFmpeg 是一个强大的开源工具集,用于处理音频和视频文件,包括编码、解码、转码、流处理等功能。在 Java 中,我们...
Java作为一种广泛使用的编程语言,也提供了实现视频压缩的能力。本篇将详细探讨如何使用Java来实现视频压缩,以及涉及到的相关知识点。 首先,我们要理解视频压缩的基本原理。视频是由一帧一帧的静态图像(图片)...
在Android平台上,将图片序列或录屏转换为视频是一个常见的需求,这通常涉及到多媒体处理和帧率控制等技术。在本项目中,开发者利用了JavaCV库来实现这个功能。JavaCV是一个开源的Java库,它提供了对OpenCV、FFmpeg...
- **Java2D或JavaFX**:在Java中,可以读取视频流的某一帧,然后使用Java2D或JavaFX的绘图功能将其保存为图片。 4. **视频播放**: - **JavaFX Media API**:JavaFX提供了一个内置的媒体播放器组件`MediaPlayer`...
转换视频的基本命令格式为:`ffmpeg -i input.mp4 output.flv`。其中,`-i`参数指定输入文件,`output.flv`是输出文件。还可以添加其他参数调整视频质量、分辨率、比特率等。 4. **FFmpeg抓取图片**: 从视频中...
本项目的核心目标是通过JavaCV将指定目录下的JPG图片序列合成成一个视频文件。 首先,我们需要了解JavaCV的基本用法。JavaCV提供了一个Java接口,可以直接调用OpenCV和FFmpeg的函数。在Android中,我们通常需要添加...
"用JAVA获取视频文件中的帧图片并等比缩放" Java是获取视频文件中的帧图片并等比缩放的重要技术之一。该技术可以应用于视频处理、图像处理、多媒体处理等领域。通过使用Java语言和javacv库,我们可以快速获取视频...
本文将详细介绍如何在Java中使用封装的FFmpeg库进行视频截图、视频剪辑和视频转换,并讨论其支持的编码类型以及在Windows和Linux平台上的应用。 首先,我们要了解Java封装FFmpeg的基本原理。通常,这涉及到使用JNI...
java ffmpeg实现视屏剪辑、srt字幕嵌入、视频合成、图片转视频 通过test类运行。demo基于jave的源码。对ffmpeg的两种系统下的执行文件进行了替换。所以ffmpeg版本是最新的。可以执行ffmpeg官网上大多数的命令
在Java编程环境中,将图片序列转换为视频是一个常见的任务,特别是在多媒体...以上就是使用Java(特别是JCodec库)将图片转换为视频的基本步骤。通过理解和应用这些知识,你可以根据实际需求定制自己的图片转视频工具。
java调用ffmpeg添加水印并且转换视频,代码中并没有判断哪些格式支持,那些不支持,mpg,mp4,avi,wmv基本都可以(传入格式),转换为flv avi mp4起码都没问题,其它的没事过ffmpeg是开源的支持的挺多的 补充:时间算错了,...
在Java编程中,字节流(Byte Stream)是处理数据的基本方式,特别是在处理二进制数据,如图片、音频或视频文件时。本教程将详细讲解如何使用Java实现字节流来转换和处理图片。 首先,我们需要理解字节流的概念。在...
### Java封装视频图片知识点 #### 一、概述 在Java编程语言中,处理多媒体文件(如视频和图像)是一项常见的需求。例如,在开发媒体播放器、社交媒体应用或任何需要从视频中提取帧作为图片的应用场景时,掌握如何...
下面直接初始化Jim2Mov并调用saveMovie方法开始转换视频 new Jim2Mov(new ImageProvider() { public byte[] getImage(int frame) { try { // 设置压缩比 return MovieUtils.convertImageToJPEG((jpgs[frame]),...
在Java编程环境中,获取视频信息和提取视频帧作为封面图片是一项常见的任务,特别是在处理多媒体内容时。本篇文章将深入探讨如何使用FFmpeg这个强大的跨平台命令行工具,并结合Java进行调用来实现这一功能。FFmpeg是...