哈嘍大家好今天咱們來實現一下批量下載ts格式文件後,如何合併為MP4視頻。 ts文件下載 網頁文件下載其實都可以通過requests.get以文件流的形式獲取,並以位元組的形式寫入本地文件即可。代碼如下: import os import requests # Python學習資料白嫖扣裙:70852 ...
哈嘍大家好
今天咱們來實現一下批量下載ts格式文件後,如何合併為MP4視頻。
ts文件下載
網頁文件下載其實都可以通過requests.get以文件流的形式獲取,並以位元組的形式寫入本地文件即可。
代碼如下:
import os import requests # Python學習資料白嫖扣裙:708525271 def download(url, filenames, dirname): session = requests.Session() for filename in filenames: print(u"downloading: %s" % filename) r = session.get(url + filename, stream=True).iter_content(chunk_size=1024 * 1024) filepath = os.path.join(dirname, filename) print(u"saving: %s" % filename) with open(filepath, 'wb') as f: for chunk in r: chunk and f.write(chunk) print(u"finished: %s" % filename)
我發現在保存這一步會存在性能卡點(列印saving之後等了很久都沒有生成文件),暫時沒有想到很好的優化方法,不過下載這一步其實可以借用迅雷來批量處理,步驟如下:
1、點擊新建。
2、切換為批量任務,這樣就可以使用通配符去批量下載文件了。
ts文件合併為mp4
這個需要藉助ffmpeg工具去實現。Windows平臺可以直接到官網下載壓縮包,解壓之後把bin目錄加入到環境變數中即可。
最後使用ffmpeg合併ts文件的代碼如下:
import os def merge(filenames, dirname, video='video.mp4'): # 先用一個文件保存所有的文件路徑(格式:file '***.ts') path = os.path.join(dirname, 'path.txt') with open(path, 'w+') as f: for filename in filenames: f.write("file '%s'\n" % os.path.join(filename)) os.chdir(dirname) os.system('ffmpeg -f concat -safe 0 -y -i %s -c copy -strict -2 %s' % (path, os.path.join(dirname, video)))
好了,今天的分享就到這結束了,下次見。