`
xlxin
  • 浏览: 16662 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用JAVE转换视频格式以及获取视频某帧作为图片

阅读更多
官网下载jar包:http://www.sauronsoftware.it/projects/jave/manual.php
我下载版本是:jave-1.0.2.zip

转flv:
public static void main(String[] args) {
		File source = new File("E:\\test\\source.mp4");
		File target = new File("E:\\test\\target.flv");// 转flv

		AudioAttributes audio = new AudioAttributes();
		audio.setCodec("libmp3lame");
		audio.setBitRate(new Integer(64000));
		audio.setChannels(new Integer(1));
		audio.setSamplingRate(new Integer(22050));
		VideoAttributes video = new VideoAttributes();
		video.setCodec("flv");// 转flv
		video.setBitRate(new Integer(180000));// 180kb/s比特率
		video.setFrameRate(new Integer(1));// 1f/s帧频,1是目前测试比较清楚的,越大越模糊
		EncodingAttributes attrs = new EncodingAttributes();
		attrs.setFormat("flv");// 转flv
		attrs.setAudioAttributes(audio);
		attrs.setVideoAttributes(video);
		Encoder encoder = new Encoder();
		long beginTime = System.currentTimeMillis();
		try {
			// 获取时长
			MultimediaInfo m = encoder.getInfo(source);
			long sTime = m.getDuration();
			long minute = sTime / 60000;
			long second = (sTime % 60000) / 1000;
			System.out.println("视频时长:" + minute + ":" + (second < 10 ? "0" + second : second));
			System.out.println("获取时长花费时间是:" + (System.currentTimeMillis() - beginTime));
			beginTime = System.currentTimeMillis();
			encoder.encode(source, target, attrs);
			System.out.println("视频转码花费时间是:" + (System.currentTimeMillis() - beginTime));
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (InputFormatException e) {
			e.printStackTrace();
		} catch (EncoderException e) {
			e.printStackTrace();
		}
	}


转MP4:
public static void main(String[] args) {
		File source = new File("E:\\test\\source.avi");
		File target = new File("E:\\test\\target.mp4");// 转MP4

		AudioAttributes audio = new AudioAttributes();
		audio.setCodec("libmp3lame");
		audio.setBitRate(new Integer(64000));
		audio.setChannels(new Integer(1));
		audio.setSamplingRate(new Integer(22050));
		VideoAttributes video = new VideoAttributes();
		video.setCodec("libxvid");// 转MP4
		video.setBitRate(new Integer(180000));// 180kb/s比特率
		video.setFrameRate(new Integer(1));// 1f/s帧频,1是目前测试比较清楚的,越大越模糊
		EncodingAttributes attrs = new EncodingAttributes();
		attrs.setFormat("mp4");// 转MP4
		attrs.setAudioAttributes(audio);
		attrs.setVideoAttributes(video);
		Encoder encoder = new Encoder();
		long beginTime = System.currentTimeMillis();
		try {
			// 获取时长
			MultimediaInfo m = encoder.getInfo(source);
			System.out.println(m.getDuration());
			System.out.println("获取时长花费时间是:" + (System.currentTimeMillis() - beginTime));
			beginTime = System.currentTimeMillis();
			encoder.encode(source, target, attrs);
			System.out.println("视频转码花费时间是:" + (System.currentTimeMillis() - beginTime));
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (InputFormatException e) {
			e.printStackTrace();
		} catch (EncoderException e) {
			e.printStackTrace();
		}
	}


获取某一帧作为png图片:
public static void main(String[] args) {
		File source = new File("E:\\test\\flex.avi");
		File target = new File("E:\\test\\target.png");//转图片
		
		VideoAttributes video = new VideoAttributes();
		video.setCodec("png");//转图片
		video.setSize(new VideoSize(600, 500));
		EncodingAttributes attrs = new EncodingAttributes();
		attrs.setFormat("image2");//转图片
		attrs.setOffset(3f);//设置偏移位置,即开始转码位置(3秒)
		attrs.setDuration(0.01f);//设置转码持续时间(1秒)
		attrs.setVideoAttributes(video);
		Encoder encoder = new Encoder();
		long beginTime = System.currentTimeMillis();
		try {
			//获取时长
			 MultimediaInfo m = encoder.getInfo(source);
			 System.out.println(m.getDuration());
			 System.out.println("获取时长花费时间是:" + (System.currentTimeMillis() - beginTime));
			 beginTime = System.currentTimeMillis();
			encoder.encode(source, target, attrs);
			System.out.println("视频转码花费时间是:" + (System.currentTimeMillis() - beginTime));
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (InputFormatException e) {
			e.printStackTrace();
		} catch (EncoderException e) {
			e.printStackTrace();
		}
	}

从官网下载的帮助文档中可以看到有很多编码格式,以此类推,相信可以转成你想要的格式
0
1
分享到:
评论

相关推荐

    java获取视频信息,帧(封面图片)

    在Java编程环境中,获取视频信息和提取视频帧作为封面图片是一项常见的任务,特别是在处理多媒体内容时。本篇文章将深入探讨如何使用FFmpeg这个强大的跨平台命令行工具,并结合Java进行调用来实现这一功能。FFmpeg是...

    用JAVA获取视频文件中的帧图片并等比缩放

    通过使用Java语言和javacv库,我们可以快速获取视频文件中的帧图片,并对其进行等比缩放,以满足不同的应用需求。 知识点一:视频文件中的帧图片获取 * 视频文件中的帧图片获取是指从视频文件中抽取出每一帧图片的...

    java后台利用ffmpeg实现将视频截取某一帧图片并保存

    5. **保存图像**:一旦解码得到视频帧(通常是`org.bytedeco.ffmpeg.avutil.AVFrame`类型),你可以使用`sws_scale()`函数将其转换为RGB格式,以便于保存为常见的图像格式,如JPEG或PNG。`org.bytedeco.ffmpeg....

    java实现视频生成图片

    java实现可以获取视频中某一帧的图片,并将图片保存至本地,自定义设置截取图片的宽度和高度,获取视频的总帧数,视频总时长。

    JAVA获取视频缩略图

    5. 转换为图像:将视频帧转换为`BufferedImage`对象,这一步可以使用`IImage`到`BufferedImage`的转换。 6. 保存图像:将`BufferedImage`对象保存为JPEG或其他图像格式的文件。 以下是一个简单的示例代码: ```...

    Java利用VLC实现从视频中抽取帧图片

    VLC是一款流行的开源多媒体播放器,同时也提供了一个强大的开发库,名为libVLC,使得开发者能够利用其功能进行媒体处理,包括视频帧的提取。在这个场景中,我们需要根据预设的抽帧数量,从一个视频文件中平均地抽取...

    Javacv处理视频,提取成帧图片,生成gif

    - 在这个场景中,OpenCV 可能被用来读取视频、处理视频帧以及保存图片。 3. **FFmpeg**: - FFmpeg 是一套用于处理多媒体数据的工具,可以进行音频和视频的编码、解码、格式转换等操作。 - 在 JavaCV 中,FFmpeg...

    Java 获取视频时长、格式、大小需要的jar

    在Java编程环境中,有时我们需要处理多媒体文件,特别是视频文件,比如获取视频的时长、格式以及文件大小等信息。为了实现这些功能,开发者通常会依赖第三方库。在本例中,我们关注的是名为"jave-1.0.2"的库,它是一...

    Java利用FFmpeg解析视频,截图,获取视频播放时间

    2. **视频截图**:要截取视频的某一帧作为图片,可以使用FFmpeg的"-ss"选项指定时间戳,"-vframes 1"表示只保留一帧,"-i"指定输入文件,最后指定输出图片文件。Java代码中,可以通过构建包含这些参数的命令字符串,...

    视频转换格式,截取图片中某一帧所需要的工具(asp.net/Java)

    本压缩包提供了一系列工具,主要用于视频格式转换以及从视频中截取图片帧,这在很多应用场景中都非常有用,如多媒体制作、在线教育、社交媒体分享等。下面我们将详细探讨这些工具和它们在asp.net和Java开发中的应用...

    java视频格式转换

    2. **文件读写操作**:在进行格式转换之前,我们需要使用Java的File类来处理源视频文件,获取文件信息,并准备目标文件的写入。 3. **解码与编码**:转换过程主要包括对原始视频的解码和新格式的编码。解码是将原始...

    使用OpenVCharp获取视频的帧图片

    在C#中使用OpenVSharp获取视频帧并保存为图片的过程主要包括以下几个步骤: 1. **导入OpenVSharp库**:在项目中添加对OpenCVSharp4的引用。这可以通过NuGet包管理器来实现,搜索"OpenCVSharp4"并安装。 2. **视频...

    springboot 获取视频第一帧和时长

    FFmpeg可以将视频帧转换为图片,例如JPEG格式: ```java String cmd = "ffmpeg -i input.mp4 -vframes 1 output.jpg"; Process process = Runtime.getRuntime().exec(cmd); // 检查返回值或错误信息以确保操作...

    获取视频第一帧相关jar包javacv.zip

    通常,这个类会使用JavaCV提供的`FrameGrabber`接口,通过FFmpeg读取视频文件,并使用`grab()`方法获取视频帧。一旦得到帧,可以利用OpenCV的函数将其保存为图片。 至于`pom配置.txt`,这可能是一个Maven项目的配置...

    java利用ffmpeg获取视频缩略图

    本项目就是关于如何在Java环境中使用ffmpeg来获取视频的缩略图,提供了一个简单易用的解决方案。 首先,ffmpeg是一个强大的命令行工具,它支持多种视频、音频格式的处理,包括转换、合并、剪辑以及生成缩略图等。在...

    java获取视频长度

    在Java编程环境中,获取视频长度是一项常见的任务,尤其在处理用户上传视频的场景下。本文将深入探讨如何使用Java来实现这一功能,并结合提供的文件进行分析。 首先,我们需要理解视频文件的结构。视频是由一系列帧...

    java封装ffmpeg截取视频图片

    1. **视频截图**:使用Java封装的FFmpeg库,开发者可以通过调用特定的方法,如`takeSnapshot()`,来截取视频的某一帧作为图片。这在视频处理中非常有用,例如创建视频预览图或提取关键帧。截取图片时,需要指定视频...

    视频时长和截取视频封面(Java)

    截取视频封面则需要获取视频的关键帧,关键帧是能够独立解码的帧,通常用作视频的预览图。同样,我们可以利用Xuggler或FFmpeg库来实现。以下是一个基本示例,它会从视频的第一帧提取封面: ```java import ...

    java视频生成图片(缩略图)-实例-(指定时间)

    - 截取帧:提取该时间点的视频帧作为图片。 - 转换和保存:将帧数据转换为标准的图像格式(如JPEG或PNG),并保存到磁盘。 8. **性能优化:** 处理大型视频文件时,要考虑性能优化,如缓冲处理,避免频繁读写磁盘...

    javaCV+openCV+FFmpeg实现视频帧转为图像并进行人脸识别(一)

    在本项目中,我们将探讨如何使用JavaCV、OpenCV和FFmpeg库来实现在Java环境中将视频帧转换为图像,并进一步进行人脸识别。首先,我们来理解这三个关键组件: 1. **JavaCV**: JavaCV(Java Computer Vision)是Java...

Global site tag (gtag.js) - Google Analytics