`
zk461759809
  • 浏览: 13845 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Java 使用FFmpeg进行音视频文件合并

 
阅读更多

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完成音视频合成

    FFmpeg 是一个强大的开源工具,用于处理音视频文件,包括音视频的编码、解码、转换、分割、合并等操作。在Java环境中,我们可以利用JNI(Java Native Interface)或者通过执行系统命令的方式来调用FFmpeg的exe文件,...

    java+ffmpeg视频、音频转码

    FFmpeg是一款强大的跨平台命令行工具,用于处理各种音视频格式,包括转码、剪辑、合并等操作。而Java则提供了一个稳定的运行环境和丰富的库来封装FFmpeg的功能,使得在Java应用中调用FFmpeg变得更加便捷。 1. **...

    Javacv使用ffmpeg实现音视频同步播放

    ffmpeg音视频同步播放使用Javacv Javacv使用ffmpeg实现音视频同步播放是通过FFmpegFrameGrabber帧捕捉器来捕捉音频和视频帧,然后使用生产者消费者模式来播放音频和视频帧。下面是相关的知识点: 1. ...

    使用Java和ffmpeg把音频和视频合成视频的操作方法

    它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。 FFmpeg是一套可以用来记录、转换数字...

    java ffmpeg实现视屏剪辑、srt字幕嵌入、视频合成、图片转视频

    java ffmpeg实现视屏剪辑、srt字幕嵌入、视频合成、图片转视频 通过test类运行。demo基于jave的源码。对ffmpeg的两种系统下的执行文件进行了替换。所以ffmpeg版本是最新的。可以执行ffmpeg官网上大多数的命令

    Java使用ffmpeg进行视频格式转换、音视频合并、播放、截图-附件资源

    Java使用ffmpeg进行视频格式转换、音视频合并、播放、截图-附件资源

    ffmpeg java 封装工具类,音视频处理.zip

    使用FFmpeg Java封装工具类,可以实现以下常见的音视频处理操作: 1. **转换格式**:将视频或音频文件从一种编码格式转换为另一种,如MP4转FLV、MP3转AAC。 2. **裁剪和调整尺寸**:截取视频的一部分,或者调整...

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

    6. **执行命令**:在Java中,你可能还需要使用`Runtime.getRuntime().exec()`方法来执行FFmpeg命令行工具,以直接生成指定帧的图片,而无需先解码视频。这可以简化流程,但可能限制了灵活性。 7. **错误处理和资源...

    windows下java调用ffmpeg视频处理环境搭建

    在Windows环境下,使用Java调用FFmpeg进行视频处理是一项常见的任务,尤其在开发涉及多媒体处理的应用时。FFmpeg是一款强大的跨平台的音频和视频处理工具,而Java则是一种广泛使用的编程语言,它提供了丰富的库来与...

    Java将图片合并为视频

    总结起来,这个Java项目涉及到了多媒体处理、FFmpeg与Java的交互、以及如何在Java中进行图像到视频的转换。通过学习和理解这个项目,你可以掌握Java进行多媒体处理的能力,这对于开发视频编辑、动画制作等应用非常有...

    java调用视频转换工具ffmpeg.zip

    Java调用视频转换工具FFmpeg是一项...通过学习和实践,开发者可以熟练掌握这一技能,提升其在音视频领域的开发能力。在提供的压缩包文件中,可能包含了详细的教程、示例代码以及必要的配置文件,供开发者参考和使用。

    ffmpeg合成视频

    总结,FFmpeg与Java的结合使用,能实现丰富的视频处理功能。在实际开发中,应根据具体需求调整FFmpeg命令参数,确保处理效率和视频质量。同时,对FFmpeg的深入理解有助于优化处理流程,提升用户体验。在Java代码中,...

    使用JavaCV中的FFmpeg合成视频

    使用详情见博客:https://blog.csdn.net/weixin_38500202/article/details/110087106

    JAVA 利用 ffmpeg 和 mencoder 对视频进行转换

    本文将深入探讨如何使用Java结合FFmpeg和mencoder工具对视频进行转换。FFmpeg是一个强大的跨平台的命令行工具,用于处理音频和视频文件,而mencoder是MPlayer的一部分,同样用于视频编码和转换。 首先,让我们理解...

    java封装ffmpeg对视频截图和转格式(含代码)

    本教程将深入讲解如何使用Java进行FFmpeg的封装,实现视频截图和格式转换功能,特别关注将视频转换为FLV格式。 首先,你需要在项目中引入FFmpeg的Java绑定库,如`javacpp-presets/ffmpeg`。这个库提供了与FFmpeg...

    ffmpeg 音视频转码代码

    FFmpeg 是一个强大的开源工具,用于处理音视频文件,包括转码、剪辑、合并、流处理等操作。本篇文章将深入探讨 FFmpeg 在音视频转码中的应用,以及如何利用代码实现这一过程。 首先,FFmpeg 包含了一整套的库和...

    java 视频格式转换-ffmpeg

    3. **ConvertVideo.java**:这个文件很可能是一个示例Java类,展示了如何使用FFmpeg进行视频格式转换。它可能包含创建FFmpegExecutor对象、设置输入和输出文件、以及执行转换操作的代码。 4. **ffmpeg.zip**:这个...

    java web ffmpeg memcoder视频转换为flash

    1. FFmpeg:FFmpeg是一款开源的跨平台多媒体处理工具,能够进行音视频的编码、解码、转码、合并、提取、分析等多种操作。在本场景中,FFmpeg用于将源视频文件转换为适合在网络中播放的Flash(FLV或SWF)格式。`...

    ffmpeg实现的视频分割

    使用FFmpeg进行视频分割,通常会使用`-ss`参数指定开始时间,`-t`参数指定持续时间,以及`-i`参数指定输入视频文件。例如,分割视频从第30秒开始,持续60秒的命令为: ``` ffmpeg -i input.mp4 -ss 00:00:30 -t ...

    ffmpeg获取视频时长

    FFmpeg是一个非常强大的跨平台音视频处理工具集,支持多种音视频编解码器和容器格式,广泛应用于音视频的转码、流媒体传输、多媒体文件的生成与播放等领域。在本案例中,主要聚焦于利用FFmpeg提取视频的基本属性信息...

Global site tag (gtag.js) - Google Analytics