版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z564359805/article/details/81055825
- # convert_m3u8.py
- # -*- coding:utf-8 -*-
- import sys
- import os
- from glob import glob
- #获取需要转换的路径
- def get_user_path(argv_dir):
- if os.path.isdir(argv_dir):
- return argv_dir
- elif os.path.isabs(argv_dir):
- return argv_dir
- # else:
- # # return False
- # print("您输入的路径不正确,:-(")
- #对转换的TS文件进行排序
- def get_sorted_ts(user_path):
- # 对ts文件名字进行重命名,防止出现001.ts的名字,系统自动改成1.ts
- dirlist = os.listdir(user_path)
- for name in dirlist:
- if name[-3:]==".ts":
- newname = str(int(name[:-3]))+".ts"
- os.rename(user_path+"/"+name,user_path+"/"+newname)
- ts_list = glob(os.path.join(user_path,'*.ts'))
- # print(ts_list)
- boxer = []
- for ts in ts_list:
- if os.path.exists(ts):
- # print(os.path.splitext(os.path.basename(ts)))
- # file就是文件的名字,_是文件的扩展名.ts
- file,_ = os.path.splitext(os.path.basename(ts))
- # boxer.append(file)
- # file要转换为int类型才能保证排序正确,但是要求转换文件名字是1.ts不能是001.ts
- boxer.append(int(file))
- boxer.sort()
- # print(boxer)
- return boxer
- #文件合并
- def convert_m3u8(boxer,o_file_name):
- #cmd_arg = str(ts0)+"+"+str(ts1)+" "+o_file_name
- tmp = []
- for ts in boxer:
- tmp.append(str(ts)+'.ts')
- cmd_str = '+'.join(tmp)
- exec_str = "copy /b "+cmd_str+' '+o_file_name
- # print("copy /b "+cmd_str+' '+o_file_name)
- os.system(exec_str)
- if __name__=='__main__':
- # print(sys.argv[1:])
- argv_len = len(sys.argv)
- if argv_len == 3:
- o_dir,o_file_name =sys.argv[1:]
- # print(o_dir+":"+o_file_name)
- user_path = get_user_path(o_dir)
- # print(user_path)
- if not user_path:
- print("您输入的路径不正确,:-(")
- else:
- if os.path.exists(os.path.join(user_path,o_file_name)):
- print('目标文件已存在,程序停止运行。')
- exit(0)
- try:
- os.chdir(user_path)
- except:
- print("请核实文件路径地址,程序停止运行!")
- exit(0)
- #convert_m3u8('2.ts','4.ts',o_file_name)
- boxer = get_sorted_ts(user_path)
- convert_m3u8(boxer,o_file_name)
- #print(os.getcwd())
- else:
- print("参数个数非法")
使用说明:
1、首先文件需是:1.ts,2.ts文件,其他扩展名不可以,另外如果文件名是001.ts系统会对其进行重命名修改为1.ts;
2、将上述程序保存为:convert_m3u8.py;
3、打开cmd命令进入到convert_m3u8.py文件所在地址,运行:python convert_m3u8.py m3u8视频的目录 要转换后文件的名字(例如:python convert_m3u8.py D:\123\视频文件夹 转换后名字.mp4);
4、如果提示命令行太长,代表该视频文件夹下文件太多,可以先选取一部分(一般为1000个以内),转换为a.ts和b.ts两个文件,再将这两个文件进行合并转换。
来自 https://blog.csdn.net/z564359805/article/details/81055825