python用ffmpeg合并大量ts文件为mp4视频

适用于在本地需要拼接大量的.ts文件
在这里插入图片描述
代码如下:

# /usr/bin/env python
# -*- coding: utf-8 -*-

import datetime
import os
def test(path, save_path):
	"""path是需要合并的路径, save_path是保存路径"""
    # 首先获取当前路径下的文件名列表,并判断是否存在一个名为 file_list.txt 的文件,如果存在则删除
    file_names = os.listdir(path)
    if 'file_list.txt' in file_names:
        os.remove(path+'file_list.txt')
    # 定义一个输出文件名,并判断输出文件名是否已经存在,如果存在则添加“新”前缀
    out_file_name = 'output.mp4'
    while out_file_name in os.listdir(save_path):
        out_file_name = '新' + out_file_name
    # 读取当前路径下所有 ts 文件,并对 ts 文件名进行排序,根据文件名的数字部分进行排序
    ts_files = [f for f in os.listdir(path) if f.endswith('.ts')]
    sorted_files = sorted(ts_files, key=lambda x: int(x.split('.')[0]))
    # 打开一个名为 file_list.txt 的文件,并将合并后的 ts 文件路径写入文件
    with open(path+'file_list.txt', 'w', encoding='utf-8') as f:
        for file in sorted_files:
            f.write(f"file '{file}'\n")
    print("生成txt文件成功!")

    # 开始合并视频
    start = datetime.datetime.now()
    print('开始合成,初始时间为:', datetime.datetime.now())
    ffmpeg_bin_dic = 'K:\\1\\ffmpeg\\bin\\'
    os.system(ffmpeg_bin_dic+'ffmpeg -f concat -safe 0 -i '+path+'file_list.txt'+' -c ' + ' copy ' + save_path + out_file_name)

    print('合成后的当前时间为:', datetime.datetime.now())
    print('合成视频完成!用时:'+str(datetime.datetime.now()-start))

test('K:/1/1/', 'K:/1/1/')

ffmpeg使用语法:

命令格式:

 ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件] ffmpeg [[options]['-i' input_file]]... {[options] output_file}... 

具体:

  1. -f concat,-f 一般设置输出文件的格式,如-f psp(输出psp专用格式),但是如果跟concat,则表示采用concat协议,对文件连接合并。

  2. -safe 0,用于忽略一些文件名错误,如长路径、空格、非ANSIC字符

参考:
Python批量下载ts视频文件,并用ffmpeg合并
python合并ts视频(三种方法)
ffmpeg的一些初级语法
ffmpeg命令基本语法和常见命令

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值