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

avatar
作者
筋斗云
阅读量:0

适用于在本地需要拼接大量的.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命令基本语法和常见命令

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!