FFmpeg 合并多个 mp4

mp4 文件过多的情况下一条条敲命令显然不够优雅, 这里使用 python 来生成 bash 脚本来合并 mp4

编写合并脚本

安装 natsort 解决 python 的排序问题

pip3 install natsort

新建一个 concat_sh.py 文件

import os
from natsort import natsorted

L = []
# 访问 mp4 文件夹
for root, dirs, files in os.walk('/video'):
    files = natsorted(files)
    for file in files:
        # 拼接 mp4 路径并添加到数组
        if os.path.splitext(file)[1] == '.mp4':
            file_path = os.path.join(root, file)
            L.append(file_path)

# 生成 concat_mp4.sh 文件
with open('concat_mp4.sh', 'w') as f:
    f.write("#! /bin/bash\n\n")
    for l in L:
        f.write(f"ffmpeg -i {l} -vcodec copy -acodec copy -vbsf h264_mp4toannexb {l.replace('.mp4', '.ts')}\n")

    f.write(f'\nffmpeg -i "concat:{"|".join([i.replace(".mp4", ".ts") for i in L])}" -acodec copy -vcodec copy output.mp4\n')
    f.write('rm /video/*.ts')

把上面 /videorm /video/*.ts 里的路径换成你的视频文件夹所在路径, 然后在终端运行命令

python3 concat_sh.py && bash concat_mp4.sh

运行完之后就会在目录下多出一个 output.mp4 文件, 这个就是合并好了的视频文件了


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!