ffmepg入门学习七 ffmepg把多个视频合成一个视频

1.准备

  

ffmpeg

链接:https://pan.baidu.com/s/1oh_36qFxnLW5Kmdf8F5eTQ 
提取码:rsdn 
复制这段内容后打开百度网盘手机App,操作更方便哦

 

准备3个视频

test.txt


file '20190516150254.mp4'
file '20190516151754.mp4'
file '20190516153254.mp4'

2.代码 

package com.qihui.qxj.services.system;
 
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
 
import org.junit.Test;
 
public class Test1 {
	
	/**
	 * 把多个视频合成一个视频
	 */
	@Test
	public void test4(){
		try {
			List commend = new ArrayList();
			commend.add("c:/bin/ffmpeg.exe");
			commend.add("-loglevel");
			commend.add("8");
			commend.add("-y");
			commend.add("-f");
			commend.add("concat");
			commend.add("-safe");
			commend.add("0");
			commend.add("-i");
			commend.add("D:/project/direct/40/test.txt");
			commend.add("-c");
			commend.add("copy");
			commend.add("-y");
			commend.add("d:/out.mp4");
			start(commend);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void start(List commend) {
		Process p = null;
		try {
			ProcessBuilder builder = new ProcessBuilder(commend);
			builder.command(commend);
			p = builder.start();
			p.getOutputStream().close();
			doWaitFor(p);
			p.destroy();
		} catch (Exception e) {
			PrintCatchErrorMsg.Print(e, "Part", "getRSTPPicture.catch", "Exception");
			p.destroy();
		}
	}
	
   
   public static int doWaitFor(Process p) {
	      InputStream in = null;
	      InputStream err = null;
	      int exitValue = -1;
 
	      try {
	         in = p.getInputStream();
	         err = p.getErrorStream();
	         boolean finished = false;
 
	         while(!finished) {
	            try {
	               Character c;
	               while(in.available() > 0) {
	                  c = new Character((char)in.read());
	                  System.out.print(c);
	               }
 
	               while(err.available() > 0) {
	                  c = new Character((char)err.read());
	                  System.out.print(c);
	               }
 
	               exitValue = p.exitValue();
	               finished = true;
	            } catch (IllegalThreadStateException var19) {
	               Thread.currentThread();
	               Thread.sleep(500L);
	            }
	         }
	      } catch (Exception var20) {
	      } finally {
	         try {
	            if (in != null) {
	               in.close();
	            }
	         } catch (IOException var18) {
	         }
 
	         if (err != null) {
	            try {
	               err.close();
	            } catch (IOException var17) {
	            }
	         }
 
	      }
 
	      return exitValue;
	   }
}

c:/bin/ffmpeg.exe 是ffmepg的安装地址

3、注意事项


输入文件必须是有序的,写入文件text.txt中
输入文件格式最好相同,分辨率大小最好相同

转载自:https://blog.csdn.net/qq_16855077/article/details/90265073

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值