码峰博客 – 码而思

分享积累从此时此刻开始

使用 python ffmpeg合并.ts文件

下载后的视频文件如果是2秒一个的.ts文件,如何快速进行合并,输出一个完整的MP4文件,可以使用 python + ffmpeg 实现

下载 ffmpeg

下载地址:https://www.ffmpeg.org/download.html

windows用户下载

MAC 用户下载

安装配置

windows

windows 免安装,解压即可。
解压后找到 bin 目录,复制 bin 完整路径,如小编电脑路径为:D:\Program Files\ffmpeg-2023-11-28-git-47e214245b-full_build\bin

添加环境变量,使用小编推荐工具 Rapid Environment Editor 进行添加,添加后点击保存

控制台输入 ffmpeg,看到如下信息即说明安装成功

ts文件合并

使用命令行合并

注意切换到ts文件所在目录下运行如下命令,即可合并视频

# DM_20231204145912_001.ts|DM_20231204145912_002.ts|DM_20231204145912_003.ts 为需要合并的文件名
ffmpeg -i "concat:DM_20231204145912_001.ts|DM_20231204145912_002.ts|DM_20231204145912_003.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart output.mp4

也可以将视频列表放入文本 file_list.txt 中,使用如下命令运行

# file_list.txt 的格式如上图所示
ffmpeg -f concat -i file_list.txt -c copy output.mp4

使用 python 生成上图中的 file_list.txt

import os

# 指定文件夹路径
folder_path = r'C:\Users\Administrator\Desktop\111'  # 将此路径替换为您的ts文件夹路径

# 生成文件列表
file_list = sorted(os.listdir(folder_path))
file_path = fr"{folder_path}\file_list.txt"
with open(file_path,"w+") as f:
    for file in file_list:
        if(file.endswith(".ts")):
            f.write("file '{}'\n".format(file))
print(f"列表文件生成 ok {file_path}")

使用python 合并

直接使用 python 合并,先生成 txt 文件列表,再调用 ffmpeg 合并视频

#coding:utf-8
import os
# 指定文件夹路径
folder_path = r'C:\Users\Administrator\Desktop\111'  # 将此路径替换为您的文件夹路径

# 生成文件列表
file_list = sorted(os.listdir(folder_path))
file_path = fr"{folder_path}\file_list.txt"
with open(file_path,"w+") as f:
    for file in file_list:
        if(file.endswith(".ts")):
            f.write("file '{}'\n".format(file))
print(f"列表文件生成 ok {file_path}")

# 合并ts
# 指定ffmpeg 目录,若报错则使用ffmpeg 的绝对路径
#ffmpeg = "D:\\Program Files\\ffmpeg-2023-11-28-git-47e214245b-full_build\\bin\\ffmpeg.exe"
# 更改工作目录到目标目录
os.chdir(folder_path)
# 执行CMD命令(示例中是ffmpeg合并ts文件为mp4)
cmd_command = "ffmpeg  -f concat -i file_list.txt -c copy output.mp4"
os.system(cmd_command)
# 打印命令的输出和错误
print("视屏合并完成")

发表回复

Index