2025年3月16日 星期日 甲辰(龙)年 月十五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

m3u8转换为MP4格式

时间:12-10来源:作者:点击数:18
  • # 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文件,其他扩展名不可以(可以用ren *.* *.ts,做成bat文件修改目录下文件扩展名为.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两个文件,再将这两个文件进行合并转换。

  • 1、先把“增加扩展名ts.bat”(为防止误点在扩展名后加了个数字1,用的时候可以再去掉)文件放到下载的m3u8视频文件夹中(是一堆没有扩展名的文件夹中,如果有扩展名ts则忽略这一步)
  • 2、转换完后将文件夹和“convert_m3u8.py”文件一起放在Python的安装目录下
  • 3、在命令行中首先进入到python的安装目录下,运行:python convert_m3u8.py m3u8视频的目录 要转换后文件的名字(例如:python convert_m3u8.py D:\develop\Python\视频文件夹 转换后.mp4
  • 如果提示命令行太长,代表该视频文件夹下文件太多,可以先选取一部分(一般为1000个以内),转换为a.tsb.ts两个文件,再将这两个文件进行合并转换(注意转换的时候名字不能起英文,用1,2,3数字,先将刚才的a.tsb.ts单独放在文件夹中改为1.ts2.ts
  • 注意:如果文件名是001.ts系统会对其进行重命名修改为1.ts
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐