python實現(xiàn)m3u8格式轉(zhuǎn)換為mp4視頻格式
開發(fā)動機:最近用手機QQ瀏覽器下載了一些視頻,視頻越來越多,占用了手機內(nèi)存,于是想把下載的視頻傳到電腦上保存,可后來發(fā)現(xiàn)這些視頻都是m3u8格式的,且這個格式的視頻都切成了碎片,存在電腦里不方便查看,于是想把它轉(zhuǎn)換為其他可以直接打開播放的完整視頻,到網(wǎng)上找了一些工具,都不怎么好用,后來發(fā)現(xiàn)一個手機端的“緩沖合并工具”,倒是可以用,但是合并的視頻順序是亂的,碎片的視頻順序還需要用戶手動調(diào)整,感覺太耽誤時間了,于是自己打算寫一個轉(zhuǎn)換工具。
直接上代碼:(程序的文件名為:convert_m3u8.py)
# -*- coding:utf-8 -*-
import sys
import os
from glob import glob
#獲取需要轉(zhuǎn)換的路徑
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
#對轉(zhuǎn)換的TS文件進(jìn)行排序
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('目標(biāo)文件已存在,程序停止運行。')
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("參數(shù)個數(shù)非法");
注:代碼不多,原理也很簡單,就是把各個碎片視頻按照順序合并為一個視頻文件。
使用方法如下:
python convert_m3u8.py m3u8視頻的目錄 要轉(zhuǎn)換后文件的名字
其中第一個參數(shù)為m3u8視頻的目錄(m3u8的碎片視頻在手機里是隱藏的,需要將隱藏文件顯示出來才可以將文件導(dǎo)出到電腦里,在安卓手機里將隱藏文件夾前面的.重命名去掉就可以了),第二個參數(shù)為要轉(zhuǎn)換后文件的名字。


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解django+django-celery+celery的整合實戰(zhàn)
這篇文章主要介紹了詳解django+django-celery+celery的整合實戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
python實現(xiàn)音樂播放器 python實現(xiàn)花框音樂盒子
這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)音樂播放器,實現(xiàn)花框音樂盒子,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-02-02
Python實現(xiàn)字典排序、按照list中字典的某個key排序的方法示例
這篇文章主要介紹了Python實現(xiàn)字典排序、按照list中字典的某個key排序的方法,涉及Python字典與列表排序相關(guān)操作技巧,需要的朋友可以參考下2018-12-12
python正則表達(dá)中的re庫常用方法總結(jié)
這篇文章主要介紹了python正則表達(dá)中的re庫常用方法總結(jié)文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-08-08

