【ffmpeg】——批量合并视频

来源:互联网 发布:灌篮高手 知乎 编辑:程序博客网 时间:2024/05/21 14:43

  最近在做一个项目,关于视频下载的,需要同时对多个视频进行处理,这时我们用到了一个工

 

具——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

 

 

这样是不是很简单呢?

 

0 0
原创粉丝点击