FFmpeg实现音视频文件合并
最近需要用到将得到的音视频文件进行合并,查找资料发现FFmpeg是个非常不错的开源软件。简单几条命令行就能实现大用途。现将自己写的代码贴出来,以免再次翻找资料浪费时间。
我是做Java的,属刚入门,希望大家多批评指正,共同进步,谢谢。
关于FFmpeg的命令行,可以查看我的另一篇文档:http://zk461759809.iteye.com/admin/blogs/1636634
public boolean mergeFile(File file) {
//合并文件
//头一个file为amr文件
try {
log.info("Begin to merge video file " + videoFile.getAbsolutePath() + " into " + armFile.getAbsolutePath());
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
if(classLoader == null) {
classLoader = ClassLoader.getSystemClassLoader();
}
//注意FFmpeg路径
String command =new File(classLoader.getResource("").toURI()).getParentFile() + "\\ffmpeg -i " + armFile.getAbsolutePath() + " -r 15 -i "
+ videoFile.getAbsolutePath() + " -vf \"transpose=1\" -c:a copy -c:v libx264 " + videoFile.getParentFile() + "\\_" + videoFile.getName();
// System.out.println(command);
log.info("The command of ffmpeg is " + command);
Process process =Runtime.getRuntime().exec(command);
final InputStream in = process.getInputStream();
final InputStream error = process.getErrorStream();
//等待该进程结束后在执行后面操作
new Thread(){
public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(error));
try {
while(br.readLine() != null) {
continue;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
};
}.start();
//waitFor()操作阻塞线程,等待process执行结束
process.waitFor();
process.destroy();
log.info("Success to execute " + command);
log.info("Success to merge " + videoFile.getAbsolutePath() + " into " + armFile.getAbsolutePath() + ", and success to create " + videoFile.getParentFile() + "/_" + videoFile.getName());
} catch (Exception e) {
log.error("Exception occurs when merging video file", e);
return false;
}
return true;
}
分享到:
相关推荐
FFmpeg 是一个强大的开源工具,用于处理音视频文件,包括音视频的编码、解码、转换、分割、合并等操作。在Java环境中,我们可以利用JNI(Java Native Interface)或者通过执行系统命令的方式来调用FFmpeg的exe文件,...
FFmpeg是一款强大的跨平台命令行工具,用于处理各种音视频格式,包括转码、剪辑、合并等操作。而Java则提供了一个稳定的运行环境和丰富的库来封装FFmpeg的功能,使得在Java应用中调用FFmpeg变得更加便捷。 1. **...
ffmpeg音视频同步播放使用Javacv Javacv使用ffmpeg实现音视频同步播放是通过FFmpegFrameGrabber帧捕捉器来捕捉音频和视频帧,然后使用生产者消费者模式来播放音频和视频帧。下面是相关的知识点: 1. ...
它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。 FFmpeg是一套可以用来记录、转换数字...
java ffmpeg实现视屏剪辑、srt字幕嵌入、视频合成、图片转视频 通过test类运行。demo基于jave的源码。对ffmpeg的两种系统下的执行文件进行了替换。所以ffmpeg版本是最新的。可以执行ffmpeg官网上大多数的命令
Java使用ffmpeg进行视频格式转换、音视频合并、播放、截图-附件资源
使用FFmpeg Java封装工具类,可以实现以下常见的音视频处理操作: 1. **转换格式**:将视频或音频文件从一种编码格式转换为另一种,如MP4转FLV、MP3转AAC。 2. **裁剪和调整尺寸**:截取视频的一部分,或者调整...
6. **执行命令**:在Java中,你可能还需要使用`Runtime.getRuntime().exec()`方法来执行FFmpeg命令行工具,以直接生成指定帧的图片,而无需先解码视频。这可以简化流程,但可能限制了灵活性。 7. **错误处理和资源...
在Windows环境下,使用Java调用FFmpeg进行视频处理是一项常见的任务,尤其在开发涉及多媒体处理的应用时。FFmpeg是一款强大的跨平台的音频和视频处理工具,而Java则是一种广泛使用的编程语言,它提供了丰富的库来与...
Java调用视频转换工具FFmpeg是一项...通过学习和实践,开发者可以熟练掌握这一技能,提升其在音视频领域的开发能力。在提供的压缩包文件中,可能包含了详细的教程、示例代码以及必要的配置文件,供开发者参考和使用。
总结起来,这个Java项目涉及到了多媒体处理、FFmpeg与Java的交互、以及如何在Java中进行图像到视频的转换。通过学习和理解这个项目,你可以掌握Java进行多媒体处理的能力,这对于开发视频编辑、动画制作等应用非常有...
总结,FFmpeg与Java的结合使用,能实现丰富的视频处理功能。在实际开发中,应根据具体需求调整FFmpeg命令参数,确保处理效率和视频质量。同时,对FFmpeg的深入理解有助于优化处理流程,提升用户体验。在Java代码中,...
使用详情见博客:https://blog.csdn.net/weixin_38500202/article/details/110087106
本文将深入探讨如何使用Java结合FFmpeg和mencoder工具对视频进行转换。FFmpeg是一个强大的跨平台的命令行工具,用于处理音频和视频文件,而mencoder是MPlayer的一部分,同样用于视频编码和转换。 首先,让我们理解...
本教程将深入讲解如何使用Java进行FFmpeg的封装,实现视频截图和格式转换功能,特别关注将视频转换为FLV格式。 首先,你需要在项目中引入FFmpeg的Java绑定库,如`javacpp-presets/ffmpeg`。这个库提供了与FFmpeg...
FFmpeg 是一个强大的开源工具,用于处理音视频文件,包括转码、剪辑、合并、流处理等操作。本篇文章将深入探讨 FFmpeg 在音视频转码中的应用,以及如何利用代码实现这一过程。 首先,FFmpeg 包含了一整套的库和...
3. **ConvertVideo.java**:这个文件很可能是一个示例Java类,展示了如何使用FFmpeg进行视频格式转换。它可能包含创建FFmpegExecutor对象、设置输入和输出文件、以及执行转换操作的代码。 4. **ffmpeg.zip**:这个...
1. FFmpeg:FFmpeg是一款开源的跨平台多媒体处理工具,能够进行音视频的编码、解码、转码、合并、提取、分析等多种操作。在本场景中,FFmpeg用于将源视频文件转换为适合在网络中播放的Flash(FLV或SWF)格式。`...
使用FFmpeg进行视频分割,通常会使用`-ss`参数指定开始时间,`-t`参数指定持续时间,以及`-i`参数指定输入视频文件。例如,分割视频从第30秒开始,持续60秒的命令为: ``` ffmpeg -i input.mp4 -ss 00:00:30 -t ...
在实际应用中,根据项目需求,你可能需要对FFmpeg命令进行更复杂的配置,如处理多个输入文件、合并音频、剪辑片段等。FFmpeg的文档提供了丰富的信息,帮助开发者深入理解其功能和用法。 总之,FFmpeg是处理多媒体...