開發動機:最近用手機QQ瀏覽器下載了一些視頻,視頻越來越多,占用了手機內存,于是想把下載的視頻傳到電腦上保存,可后來發現這些視頻都是m3u8格式的,且這個格式的視頻都切成了碎片,存在電腦里不方便查看,于是想把它轉換為其他可以直接打開播放的完整視頻,到網上找了一些工具,都不怎么好用,后來發現一個手機端的“緩沖合并工具”,倒是可以用,但是合并的視頻順序是亂的,碎片的視頻順序還需要用戶手動調整,感覺太耽誤時間了,于是自己打算寫一個轉換工具。
直接上代碼:(程序的文件名為:convert_m3u8.py)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# -*- 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 #對轉換的TS文件進行排序 def get_sorted_ts(user_path): 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 ,_ = os.path.splitext(os.path.basename(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 ) os.chdir(user_path) #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 ( "參數個數非法" ); |
注:代碼不多,原理也很簡單,就是把各個碎片視頻按照順序合并為一個視頻文件。
使用方法如下:
python convert_m3u8.py m3u8視頻的目錄 要轉換后文件的名字
其中第一個參數為m3u8視頻的目錄(m3u8的碎片視頻在手機里是隱藏的,需要將隱藏文件顯示出來才可以將文件導出到電腦里,在安卓手機里將隱藏文件夾前面的.重命名去掉就可以了),第二個參數為要轉換后文件的名字。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://blog.csdn.net/septwolves2015/article/details/76408742