【ffmpeg】——批量合并视频

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

 

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

 

 

这样是不是很简单呢?

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值