需求:需要把多个短视频合并成一个视频
系统:我的是Windows10系统
一、需要安装ffmpeg
1、下载压缩包:
官网地址:http://www.ffmpeg.org/download.html
直接下载地址:https://ffmpeg.zeranoe.com/builds/
2、解压之后,添加到path环境变量
下载之后是个压缩包,解压之后把文件夹放到一个不用的磁盘固定不动位置,我这边放到安装软件的D盘,然后把把文件下面的bin路径添加到系统path路径下面。
具体步骤不会可以参考:
https://blog.csdn.net/chy466071353/article/details/54949221
3、测试是否安装成功
cmd中运行ffmpeg出现如下图,说明ffmpeg安装成功。
二、准备name.txt
注意事项:
name.txt里面的名字就是合成视频的顺序,可以使用python的一个模块natsort,这个模块的natsorted功能,它可以使识别列表中的任何元素中数字的位置,根据数字和字母进行派人,
安装:pip install natsort
官网地址:
https://pypi.org/project/natsort/
主要是使用了这个功能:
>>> from natsort import natsorted
>>> a = [‘2 ft 7 in’, ‘1 ft 5 in’, ‘10 ft 2 in’, ‘2 ft 11 in’, ‘7 ft 6 in’]
>>> natsorted(a)
[‘1 ft 5 in’, ‘2 ft 7 in’, ‘2 ft 11 in’, ‘7 ft 6 in’, ‘10 ft 2 in’]
把需要的视频文件准备到一个文件夹下,把
file ‘视频文件名1’
file ‘视频文件名2’
…
按行写入一个name.txt文本下,我用python写入的代码,可以作为参考:
import os
from natsort import natsorted
path = r"视频列表目录"
files = os.listdir(path)
files = natsorted(files)
print(files)
file_w = open('{}\\name.txt'.format(path),'w',encoding='utf-8')
for i in files:
if 'out' in i:
file_w.write('file '+ "'{}'".format(i)+'\n')
file_w.close()
生成name.txt 文件,格式生成如下:
三、合并视频
方法1:
在cmd中,到视频列表文件下
ffmpeg -f concat -i name.txt -c copy output_set.mp4
完成后会再当前目录下生成一个output_set.mp4视频,至此完成。
方法2:python的os模块
import os
path = 视频列表地址
os.chdir(path)
start_time = time.time()
os.system(' ffmpeg -f concat -i name.txt -c copy output_set.mp4')