ffmpeg合并两个视频

我需要在程序里面实现合并两个视频的功能,用的是C#,但是直接能使用的成熟工具好像并不多,这两天找了很多工具:

aforge.NET 可以处理视频但是只能处理视频画面,声音处理不了,对我来说没用。

accord.NET 它是为了扩展aforge.NET,可以处理音频,但是貌似没办法把音频混合进视频文件中。

Opencv 据说可以处理视频,但是看官网介绍直接放弃,即使它能处理视频恐怕也要大费周章,我没那么多时间。

Splicer 介绍让我觉得十分适合,底下却说是为了.NET website站点开发,而且这个库从2008年作者就停止维护,蛋疼。

ffmpeg 目前打算用这个,C#代码无法直接调用API,但是可以从程序里面开个进程来使用它的exe

乱起八糟的个人库也看了诺干个,用不上,蛋疼!


ffmpeg看起来很牛,但是像我这样对视频处理不熟悉的外行很难傻瓜式地使用,在网上找了若干个合并ffmpeg的方法,多少都有点问题,暂时采用下面方法:

1把要合并的诺干个视频文件格式转换成AVI(测试过mpeg格式,但是在第二步合成后放在后面的视频花屏)

ffmpeg -i aaa.avi -f avi -qscale 51 -y -r 29.97 ffff.avi

2 使用concat合并这两个文件

ffmpeg -i concat:"part1.avi|part2.avi" -vcodec copy -acodec copy output.avi


PS:

1.经过测试,如果合成时part1.avi不带有声音的话,不论part2.avi有没有声音,合成后的视频是没有声音的,所以要想合成后的视频保留声音,part1.avi必须带有有声音。

2.这个合成指令似乎对part1.avi|part2.avi的格式有比较严格的要求,不单单是文件的后缀名相同(废话),我用狸窝全能视频转换器转换后的part1.avi无法与使用ffmpeg转换后的part2.avi合成能够正常播放的视频(会花屏),所以像我一样对视频格式不熟悉的话还是都先用ffmpeg进行格式转换再合成。


展开阅读全文

没有更多推荐了,返回首页