网络视频ts格式文件下载及将其合成单一视频文件

一些网站会将视频分割成n个ts文件。

用猫抓chrome插件,抓取index.m3u8,可得到众多ts文件下载地址。

可用迅雷打包下载ts文件以及index.m3u8文件,但有时会出现下载不了的情况,怀疑是请求报头的问题上。

若迅雷下载不了,则尝试改用命令curl下载。

用以下Python脚本批量生成curl命令(urls.txt内含ts下载网址,从猫抓插件那里获取的)。

import os

template = \
'''curl -L "%s" -o "%s" --create-dirs -H "Accept: image/*,*/*;q=0.8" -H "Connection: keep-alive" -H "Accept-Encoding: gzip, deflate, sdch" -H "Accept-Language: zh-CN,zh,en,ja;q=0.8" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36" -k --retry 4\n'''

workDir = "E:\\a\\"
os.chdir(workDir)

with open("urls.txt", "r", encoding="utf-8") as fi:
    with open("out.txt", "w", encoding="utf-8") as fo:
        for line in fi.readlines():
            #print(line)
            line = line.strip()
            if line.endswith("ts"):
                url = line
                filename = line.split("/")[-1]
                print(template % (url, filename), file=fo)

生成后的命令在bash或cmd运行,开始下载文件。下载任务可能过多,单一窗口会很耗时,可新开几个窗口,分派下载任务,并行下载。

最后,在bash或cmd运行以下命令,将同一目录下众多ts文件合成单一mp4文件(事先要下载ffmpeg软件并配置环境变量)。

ffmpeg -i index.m3u8 -vcodec copy -acodec copy a.mp4