【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
这样是不是很简单呢?
相关文章推荐
- ffmpeg 视频转换、图片批量提取
- 用 ffmpeg 实现批量剪切视频
- ffmpeg 合并视频文件
- ffmpeg裁剪合并视频
- [备忘]ffmpeg切视频和合并视频命令
- 关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- ffmpeg裁剪合并视频
- [转]关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- ffmpeg实现视频切割合并
- FFmpeg提取第一个视频合并第二个视频的音频同时加2个水印
- ffmpeg合并多个视频
- 关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- ffmpeg 编译安装, 视频合并
- 用ffmpeg快速剪切和合并视频
- [转载]用 FFMPEG 合并 MP4 视频
- ffmpeg之多个MP4视频合并一个MP4视频文件(附遇见的bug)
- 使用FFMPEG合并视频
- 使用ffmpeg合并视频文件的三种方法
- Qt+FFMPEG编写适合自己的批量视频转换程序
- 视频批量转换为FLV的软件开发总结(2)——技术总结篇:FFmpeg