您的位置:首页 > 其它

【ffmpeg】——批量合并视频

2016-12-20 10:49 615 查看
  
最近在做一个项目,关于视频下载的,需要同时对多个视频进行处理,这时我们用到了一个工
 
具——ffmpeg,工具具体的安装步骤大家可以度娘,在这就不一一介绍啦。
 
    
下面进入正题,该如何使用ffmpeg工具进行批量合并视频的工作?
 
首先我们会想到的方法是:
 

写到一个for循环中,循环遍历,然后依次执行各个命令:

 
    /***
* 生成批量合并视频命令
*
* @param videos
* @return
*/
publicstatic String montageVideos(List<Video> videos, String saveAddress) {
StringoutPutCommand ="";
StringgetNameCommands = "";
Runtimeruntime =Runtime.getRuntime();
for (int i = 0; i < videos.size(); i++) {
Stringaddress =saveAddress +videos.get(i).getLive_id() + "/"
+ videos.get(i).getId();
StringchangeCommand ="ffmpeg -y -i " + address + ".mp4"
+ " -vcodec copy -acodec copy -vbsf h264_mp4toannexb"
+ address + ".ts";
try {
runtime.exec(changeCommand);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
StringgetNameCommand = address + ".ts|";
if (i == videos.size() - 1) {
getNameCommand= address + ".ts";
}
getNameCommands+=getNameCommand;
outPutCommand= "ffmpeg -i \"" + "concat:" + getNameCommands
+ "\" -acodec copy -vcodec copy -absf aac_adtstoasc "
+ saveAddress + videos.get(i).getLive_id() + "/"
+ videos.get(i).getLive_id() + ".mp4";
}
return outPutCommand;
}

 

这样做的好处是保证视频合并之后的质量,首先先把它转换成ts流,然后再进行合并,这样做相对起来比较

麻烦,需要循环遍历依次生成命令。还有一种方法是写入TXT文件,然后利用命令进行批量合并:

 
1.建立一个TXT文件(video.txt),文件内容为:

 

File ‘文件全名’

File ‘123.flv’

……

 
2.利用合并命令:

 

ffmpeg -f concat -i video.txt -c copy output.mkv

 

 

这样是不是很简单呢?

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息