引进外部类库:xuggle-xuggler.jar 文件
下载地址:http://www.xuggle.com/xuggler/downloads/
也可以直接从本文这里点击链接下载:
下载完成之后安装,然后进安装目录 \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文件编码时,
必须和源文件采样率一致,否则会出现播放时间缩短、播放速度加快或者相反的异常结果!
分享到:
相关推荐
在本项目中,核心库是 `xuggle-xuggler-5.4.jar`,这是一个强大的开源 Java 库,用于处理音视频数据。Xuggle 是 Xuggler 的一个分支,它集成了 FFmpeg 项目,提供了在 Java 中处理多媒体文件的能力。 Xuggler 5.4 ...
在Java编程语言中,将二进制文件转换为文本文档通常涉及到字符编码的理解和处理。二进制文件可以包含任何类型的数据,如图像、音频、视频或纯文本,但以非可读格式存储。而文本文档通常使用特定的字符编码(如ASCII...
在Java编程语言中,获取文件的基本信息,如分辨率、大小等,是常见的文件操作任务,尤其是在处理多媒体文件,如视频时。本示例Demo提供了两种方法来实现这一目标,使用了两个不同的库:xuggle-xuggler-5.4.jar 和 ...
Xuggler是一个强大的开源库,专为处理音视频数据而设计,它提供了丰富的API,使得在Java环境中解析和操作多媒体文件变得简单。在本文中,我们将详细探讨如何使用Xuggler来获取这些重要信息。 首先,Xuggler基于...
Xuggle是一款强大的开源Java库,它允许开发者在Java应用程序中处理、编码和解码各种视频文件。这个"Xuggle-xuggler-5.4.zip"压缩包包含了Xuggle的5.4版本,这是一个广泛使用的版本,支持多种视频格式,使得Java...
java音频格式转换工具.zipjava音频格式转换工具.zip java音频格式转换工具.zipjava音频格式转换工具.zip java音频格式转换工具.zipjava音频格式转换工具.zip java音频格式转换工具.zipjava音频格式转换工具.zip java...
在Java编程环境中,处理视频时长和截取视频封面是一项常见的任务,特别是在开发多媒体应用程序或者视频处理服务时。本教程将详细介绍如何利用Java实现这两个功能。 首先,我们要明白,Java本身并不直接支持视频处理...
这些库提供了与FFmpeg交互的API,可以方便地进行视频音频的读取、转码、合成等操作。 2. **ChangeVideo.java**: 这个文件很可能是Java程序的一个类,用于实现视频转换功能。它可能包含启动FFmpeg进程、设置参数、...
在这个场景中,我们需要关注的关键技术是利用Java进行音频格式的转换,特别是如何利用ffmpeg命令行工具在Windows和Linux环境下实现这一目标。下面将详细讨论相关的知识点。 首先,`ffmpeg`是一个强大的开源多媒体...
Java音频视频编码器,本文实例将任何音频格式转换为MP3格式 您还可以调整视频大小,更改其大小和比例等 本文实例实用于任何Windows,MacOS,Linux系统 附:完整jar项目,完善的demo,详细的注释,简单易操作
在这个场景下,我们关注的是将PCM(脉冲编码调制)音频文件转换为WAV(Waveform Audio Format)文件。PCM是一种未经压缩的原始音频数据格式,而WAV是一种流行的、包含更多元数据的容器格式,广泛用于存储和交换音频...
在本文中,我们将深入探讨如何使用Java程序调用FFmpeg执行视频文件格式转换,特别是将非FFmpeg原生支持的格式转换为FLV格式。FFmpeg是一个强大的多媒体处理工具,支持多种视频、音频格式的编码、解码和转换。在这个...
java实现音频文件播放功能 本文主要介绍了java实现音频文件播放功能,该功能具有参考价值,对感兴趣的小伙伴们具有重要的参考意义。 一、获取音频文件地址 在播放音频文件之前,首先需要获取音频文件的地址。通过...
本教程将详细讲解如何将两个MP4文件,一个包含视频流,另一个包含音频流,合并成一个新的MP4文件。我们将关注MP4格式,H264视频编码和AAC音频编码的相关知识,以及实际操作中的延时设置。 首先,理解MP4文件结构至...
Java 文件转换应用源码项目是一个基于Java 1.8开发的实用工具,它提供了丰富的文件转换功能,包括PDF与Word之间的互相转换、图像格式转换、PDF转为图片以及Base64编码与文件之间的相互转换。这个项目对于需要处理...
exe4j是EJ Technologies开发的一款工具,能够将Java应用程序转换为Windows平台下的exe文件,同时提供JRE捆绑选项,确保目标机器上即使没有安装Java环境也能运行程序。exe4j还支持高级定制功能,如自定义图标、版本...
java调用ffmpeg转换视频,并读取转换后视频的分辨率、大小以及时长。主要参考http://blog.sina.com.cn/s/blog_a5116c670102wiwj.html 的代码方式。步骤: 1.研究java如何调用外部程序 2.研究ffmpeg转换视频格式的...
Xuggle是一款开源的Java库,专门用于处理多媒体数据,包括视频和音频的编码、解码、转换以及流媒体处理。这个“xuggle学习官方例子”压缩包提供了学习和理解Xuggle库的宝贵资源,尤其适合初学者和开发者。在深入探讨...
在Java编程环境中,开发一个视频转换工具类是一个高级任务,涉及到多媒体处理和文件I/O操作。这个"java视频转换工具类"显然提供了这样的功能,能够将视频文件转换为不同的格式,如mp4、ogg和flv等。这些格式在互联网...
通过使用Java语言和javacv库,我们可以快速获取视频文件中的帧图片,并对其进行等比缩放,以满足不同的应用需求。 知识点一:视频文件中的帧图片获取 * 视频文件中的帧图片获取是指从视频文件中抽取出每一帧图片的...