`
mozartghost
  • 浏览: 11204 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[原创]JAVA环境下,增添xuggle外部库 将视频文件转换成音频文件

    博客分类:
  • JAVA
 
阅读更多

引进外部类库:xuggle-xuggler.jar 文件 


下载地址:http://www.xuggle.com/xuggler/downloads/



也可以直接从本文这里点击链接下载:

32 Bit, Java 1.5 or later xuggle-xuggler-setup.exe


下载完成之后安装,然后进安装目录  \Xuggle\share\java\jars

将目录下的  xuggle-xuggler.jar 文件导入到eclipse buildpath userLibrary里,

然后再进入  \Xuggle\bin 目录,将所有文件拷贝到 项目工程目录的 \bin 路径下(或者拷贝到你的JDK安装目录里的那个 \bin 目录下 也可以!)


以FLV转无损的WAV为例,贴上代码:

 

 

public class Main implements IMediaListener{
	
	IMediaWriter writer;
	boolean flag=false;

	public static void main(String[] args) {
		new Main().doIt();
	}

	public void doIt() {
		IMediaReader reader = ToolFactory.makeReader("E:\\aaa.flv");//E:\\aaa.rmvb  E:\\aaa.flv
		writer = ToolFactory.makeWriter("e:\\out.wav", reader);
		
		int sampleRate = 22050;//48000   22050
		int channels = 2;
		writer.addAudioStream(0, 0, ICodec.ID.CODEC_ID_PCM_S16LE, channels,
				sampleRate);
		reader.addListener(this);
		while (reader.readPacket() == null) {

		}
	}

	@Override
	public void onAddStream(IAddStreamEvent event) {
		// TODO Auto-generated method stub
		writer.onAddStream(event);
	}

	/**音频解码在这里*/
	@Override
	public void onAudioSamples(IAudioSamplesEvent event) {
		// TODO Auto-generated method stub
		writer.onAudioSamples(event);
	}

	@Override
	public void onClose(ICloseEvent event) {
		// TODO Auto-generated method stub
		writer.onClose(event);
	}

	@Override
	public void onCloseCoder(ICloseCoderEvent event) {
		// TODO Auto-generated method stub
		writer.onCloseCoder(event);
	}

	@Override
	public void onFlush(IFlushEvent event) {
		// TODO Auto-generated method stub
		writer.onFlush(event);
	}

	@Override
	public void onOpen(IOpenEvent event) {
		// TODO Auto-generated method stub
		writer.onOpen(event);
	}

	@Override
	public void onOpenCoder(IOpenCoderEvent event) {
		// TODO Auto-generated method stub
		writer.onOpenCoder(event);
	}

	@Override
	public void onReadPacket(IReadPacketEvent event) {
		// TODO Auto-generated method stub
		writer.onReadPacket(event);
	}

	@Override
	public void onVideoPicture(IVideoPictureEvent event) {
		// TODO Auto-generated method stub
		//这里屏蔽了Video的输出
	}

	@Override
	public void onWriteHeader(IWriteHeaderEvent event) {
		// TODO Auto-generated method stub
		writer.onWriteHeader(event);
	}

	@Override
	public void onWritePacket(IWritePacketEvent event) {
		// TODO Auto-generated method stub
		writer.onWritePacket(event);
	}

	@Override
	public void onWriteTrailer(IWriteTrailerEvent event) {
		// TODO Auto-generated method stub
		writer.onWriteTrailer(event);
	}
	
	public class MyCoder extends ICodec{

		protected MyCoder(long cPtr, boolean cMemoryOwn) {
			super(cPtr, cMemoryOwn);
			// TODO Auto-generated constructor stub
		}
	}
}
 

 

 

解码后的WAV文件在使用foobar2000播放时,效果如下图所示:

 

 


注意:常见的WAV文件必须使用ICodec.ID.CODEC_ID_PCM_S16LE编码,channels 是声道数量,sampleRate 是采样率,

当使用ICodec.ID.CODEC_ID_PCM_S16LE给WAV文件编码时,

必须和源文件采样率一致,否则会出现播放时间缩短、播放速度加快或者相反的异常结果!

 

4
3
分享到:
评论
1 楼 xiangyuwen 2012-03-19  
请问一下,我现在也在研究这个,但想问一个问题,xuggle提供接收网络流,那有没有提供发送网络流的,接收是通过rtmp方式接收,发送看了一些,好象都用的其他工具。不知道xuggle有没有做发送网络流这一块。

相关推荐

    java操作摄像头项目,含有xuggle-xuggler-5.4.jar

    在本项目中,核心库是 `xuggle-xuggler-5.4.jar`,这是一个强大的开源 Java 库,用于处理音视频数据。Xuggle 是 Xuggler 的一个分支,它集成了 FFmpeg 项目,提供了在 Java 中处理多媒体文件的能力。 Xuggler 5.4 ...

    java 将文件中二进制文件转换成文本文本文件并输出

    在Java编程语言中,将二进制文件转换为文本文档通常涉及到字符编码的理解和处理。二进制文件可以包含任何类型的数据,如图像、音频、视频或纯文本,但以非可读格式存储。而文本文档通常使用特定的字符编码(如ASCII...

    Java获取文件分辨率,大小等基本信息Demo

    在Java编程语言中,获取文件的基本信息,如分辨率、大小等,是常见的文件操作任务,尤其是在处理多媒体文件,如视频时。本示例Demo提供了两种方法来实现这一目标,使用了两个不同的库:xuggle-xuggler-5.4.jar 和 ...

    java使用Xuggler获得视频时长,分辨率,高宽,码率等信息

    Xuggler是一个强大的开源库,专为处理音视频数据而设计,它提供了丰富的API,使得在Java环境中解析和操作多媒体文件变得简单。在本文中,我们将详细探讨如何使用Xuggler来获取这些重要信息。 首先,Xuggler基于...

    xuggle操作视频jar包xuggle-xuggler-5.4.zip

    Xuggle是一款强大的开源Java库,它允许开发者在Java应用程序中处理、编码和解码各种视频文件。这个"Xuggle-xuggler-5.4.zip"压缩包包含了Xuggle的5.4版本,这是一个广泛使用的版本,支持多种视频格式,使得Java...

    java音频格式转换工具.zip

    java音频格式转换工具.zipjava音频格式转换工具.zip java音频格式转换工具.zipjava音频格式转换工具.zip java音频格式转换工具.zipjava音频格式转换工具.zip java音频格式转换工具.zipjava音频格式转换工具.zip java...

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

    在Java编程环境中,处理视频时长和截取视频封面是一项常见的任务,特别是在开发多媒体应用程序或者视频处理服务时。本教程将详细介绍如何利用Java实现这两个功能。 首先,我们要明白,Java本身并不直接支持视频处理...

    java+ffmpeg视频、音频转码

    这些库提供了与FFmpeg交互的API,可以方便地进行视频音频的读取、转码、合成等操作。 2. **ChangeVideo.java**: 这个文件很可能是Java程序的一个类,用于实现视频转换功能。它可能包含启动FFmpeg进程、设置参数、...

    java任意音频格式转码

    在这个场景中,我们需要关注的关键技术是利用Java进行音频格式的转换,特别是如何利用ffmpeg命令行工具在Windows和Linux环境下实现这一目标。下面将详细讨论相关的知识点。 首先,`ffmpeg`是一个强大的开源多媒体...

    java任意音频文件格式转mp3

    Java音频视频编码器,本文实例将任何音频格式转换为MP3格式 您还可以调整视频大小,更改其大小和比例等 本文实例实用于任何Windows,MacOS,Linux系统 附:完整jar项目,完善的demo,详细的注释,简单易操作

    JAVA 音频文件PCM转WAV Utils类

    在这个场景下,我们关注的是将PCM(脉冲编码调制)音频文件转换为WAV(Waveform Audio Format)文件。PCM是一种未经压缩的原始音频数据格式,而WAV是一种流行的、包含更多元数据的容器格式,广泛用于存储和交换音频...

    用java程序调用ffmpeg执行视频文件格式转换flv

    在本文中,我们将深入探讨如何使用Java程序调用FFmpeg执行视频文件格式转换,特别是将非FFmpeg原生支持的格式转换为FLV格式。FFmpeg是一个强大的多媒体处理工具,支持多种视频、音频格式的编码、解码和转换。在这个...

    java实现音频文件播放功能

    java实现音频文件播放功能 本文主要介绍了java实现音频文件播放功能,该功能具有参考价值,对感兴趣的小伙伴们具有重要的参考意义。 一、获取音频文件地址 在播放音频文件之前,首先需要获取音频文件的地址。通过...

    将MP4视频和MP4音频合并成MP4文件

    本教程将详细讲解如何将两个MP4文件,一个包含视频流,另一个包含音频流,合并成一个新的MP4文件。我们将关注MP4格式,H264视频编码和AAC音频编码的相关知识,以及实际操作中的延时设置。 首先,理解MP4文件结构至...

    java各文件转换应用源码

    Java 文件转换应用源码项目是一个基于Java 1.8开发的实用工具,它提供了丰富的文件转换功能,包括PDF与Word之间的互相转换、图像格式转换、PDF转为图片以及Base64编码与文件之间的相互转换。这个项目对于需要处理...

    Java应用程序转化成exe文件的N种方法

    exe4j是EJ Technologies开发的一款工具,能够将Java应用程序转换为Windows平台下的exe文件,同时提供JRE捆绑选项,确保目标机器上即使没有安装Java环境也能运行程序。exe4j还支持高级定制功能,如自定义图标、版本...

    java调用ffmpeg转换视频,并读取转换后视频的分辨率、大小以及时长

    java调用ffmpeg转换视频,并读取转换后视频的分辨率、大小以及时长。主要参考http://blog.sina.com.cn/s/blog_a5116c670102wiwj.html 的代码方式。步骤: 1.研究java如何调用外部程序 2.研究ffmpeg转换视频格式的...

    xuggle学习官方例子,包含jar包

    Xuggle是一款开源的Java库,专门用于处理多媒体数据,包括视频和音频的编码、解码、转换以及流媒体处理。这个“xuggle学习官方例子”压缩包提供了学习和理解Xuggle库的宝贵资源,尤其适合初学者和开发者。在深入探讨...

    java视频转换工具类(附带转换工具类)

    在Java编程环境中,开发一个视频转换工具类是一个高级任务,涉及到多媒体处理和文件I/O操作。这个"java视频转换工具类"显然提供了这样的功能,能够将视频文件转换为不同的格式,如mp4、ogg和flv等。这些格式在互联网...

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

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

Global site tag (gtag.js) - Google Analytics