m3u8轉換為MP4格式
阿新 • • 發佈:2019-02-08
# 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兩個檔案,再將這兩個檔案進行合併轉換。