python|利用ffmpeg按顺序合并指定目录内的ts文件

前言:

有的时候我们利用爬虫爬取到的ts文件很多,但ts文件只是视频片段,并且这些视频片段是需要按照一定的顺序合并的,通常ts文件合并输出格式为mp4格式

因此,本文介绍利用python,调用ffmpeg来批量的按自己定义的顺序把ts视频片段文件合并为一个完整的mp4格式文件

主要代码:

bash 复制代码
import  os
paths='D:\\index\\'
save_path='C:\\Users\\Administrator\\Desktop\\'
out_file_name='7.mp4'
file_names = os.listdir(paths)
print(file_names)

ts_files = [f for f in os.listdir(paths) if f.endswith('.ts')]
print(ts_files)
sorted_files = sorted(ts_files, key=lambda x: int(x.split('.')[0]))
print(sorted_files)
with open(paths + 'file_list.txt', 'w', encoding='utf-8') as f:
    for file in sorted_files:
        f.write(f"file '{file}'\n")
print("生成txt文件成功!")
ffmpeg_bin_dic = 'F:\\ffmpeg-master-latest-win64-gpl\\bin\\'
os.system(ffmpeg_bin_dic + 'ffmpeg -f concat -safe 0 -i ' + paths + 'file_list.txt' + ' -c ' + ' copy ' + save_path + out_file_name)

以上代码表示,先利用python的os库,扫描指定的目录,将该目录下的所有ts文件读取到

复制代码
file_list.txt 这个文件内,方便后续确认ts文件排序是否正确

ffmpeg_bin_dic = 'F:\\ffmpeg-master-latest-win64-gpl\\bin\\' 是ffmpeg程序的实际安装目录,需要使用此代码的同学按自己实际路径修改即可

os.system(ffmpeg_bin_dic + 'ffmpeg -f concat -safe 0 -i ' + paths + 'file_list.txt' + ' -c ' + ' copy ' + save_path + out_file_name) 这一段是调用ffmpeg程序,根据file_list.txt这个文件里的内容逐行调用,持续输出mp4文件,输出的文件名称为7.mp4,也就是说输出文件最终路径为

复制代码
C:\\Users\\Administrator\\Desktop\\7.mp4'

整体结构非常简单,只是一个单一功能python脚本,可在任意的python版本下运行,建议是python3.6及以上,主要是python3对于中文支持更为友好,路径paths里即使带中文python3也能够识别,所有路径必须是\\双反斜杠形式,python好像不太认识左斜杠

相关推荐
时早玖沐3 分钟前
KOOK「找不到语音频道」:同一个错误假设,我犯了三次
python·开源·ai编程
_冷眸_5 分钟前
Python 调用大模型 API:最小请求、Base URL 和 401/404 排查
开发语言·人工智能·python
niucloud-admin16 分钟前
NIUCLOUD PHP SAAS上门家政使用文档:服务保障
java·开发语言·php
Dumbness24 分钟前
UIA 读微信群消息没有 id,怎么判断哪条是新的:后缀对齐在翻历史和撤回时整屏重报
python·算法
甜到心里的蛋糕30 分钟前
从 QQ 机器人到 B 站 AI 运营:一套可复现的视频流水线踩坑实录
运维·人工智能·python·自动化·视频制作
张驰咨询公司33 分钟前
六西格玛Python DOE试验矩阵:3因子2水平生成与验算
python·六西格玛·实验设计·itertools·doe试验矩阵
熊猫钓鱼>_>43 分钟前
鸿蒙 PC 三方库适配复盘:libfvad 1.0 —— 把 WebRTC VAD 做成能装进采集链路的静态库
服务器·开发语言·华为·harmonyos·openharmony·适配·鸿蒙pc
Ai-_Man1 小时前
Coze扣子还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·1024程序员节
raindayinrain1 小时前
c++设计模式
开发语言·c++·设计模式
hiahiahia1231 小时前
Streaming Model Output
开发语言·前端