[python]如何把从网站下载ts的文件合并成视频

时间:2024-03-01 12:06:56

某些网站使用ts文件来播放视频,有些视频资料值得珍藏,便有了下面的文章。

ts是日本高清摄像机拍摄下进行的封装格式,全称为MPEG2-TS。ts即"Transport Stream"的缩写。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。

用chrome打开某些网站的视频,同时打开“开发者工具”,我们就能在network选项卡里找到动态下载的ts文件,取得url后放到迅雷里就能得到一段视频片段。

对于播放时间不长的小视频,我们可以用下面的手工方法将一批视频片段合并成一个完整的视频:

一.打开迅雷,先确保没有别的在下载。

二.播放视频时打开Chrome的“开发者工具”中netowrk选项卡,看到诸如828EbZ1743007.ts的文件出现后双击用迅雷下载,有多少个下载多少个,漏了就会丢失信息。

三.将下载好的批量ts文件拷贝到一个目录中,如d:\temp,然后打开cmd,进入这个目录,输入如下命令:copy /b *.ts final.ts ,注意这个命令分四段(1.copy 2./b 3.*.ts 4.final.ts)。 

之后,新的文件final.ts就被创建好了,用视频播放工具比如迅雷自带的“迅雷播放组件”或是“wndows media player”就可以看了。

但是,如果视频片段数量过多,手工下载就会又繁重又容易出错,好在我们可以让python来帮忙:

#encoding=utf-8
import urllib.request
import os

# 下载文件到本地的函数
def download(fileUrl):    
    # 获取网络文件的文件名
    filename = os.path.basename(fileUrl) 
    rsp=urllib.request.urlopen(fileUrl)
    img=rsp.read()
    with open(filename,\'wb\') as f:
        f.write(img)

for i in range(109,203):
    s = \'%03d\' % i
    url="https://dada-do.com/20181221/emrct0as/800kb/hls/hBNS5261"+s+".ts"
    print(url)
    download(url)
    print("downloaded")

这段文章能生成一堆ts文件的地址,然后挨个下载。

 

使用这个程序似乎快捷了,但是片段过多还是会有两个问题:

1.下载时间慢,远不如迅雷。

2.有可能被远程网站突然关闭连接。

 

如何改进?再写一点断点续传的代码?还是寻求更高效的下载手段?其实都不必,我们用程序把要下载文件的url得到就好了:

#encoding=utf-8

text=""
for i in range(111,203):
    s = \'%03d\' % i
    url="https://dada-do.com/20181221/emrct0as/800kb/hls/hBNS5261"+s+".ts"
    text=text+url+"\n"

        
with open(\'result.txt\',\'a\') as file_handle:   
    file_handle.write(text)    
    

执行完这段后,要下载的文件地址就被写到result.txt里面去了,示例如下。

https://dada-do.com/20181221/emrct0as/800kb/hls/hBNS5261186.ts
https://dada-do.com/20181221/emrct0as/800kb/hls/hBNS5261187.ts
https://dada-do.com/20181221/emrct0as/800kb/hls/hBNS5261188.ts
https://dada-do.com/20181221/emrct0as/800kb/hls/hBNS5261189.ts
https://dada-do.com/20181221/emrct0as/800kb/hls/hBNS5261190.ts
https://dada-do.com/20181221/emrct0as/800kb/hls/hBNS5261191.ts
https://dada-do.com/20181221/emrct0as/800kb/hls/hBNS5261192.ts
https://dada-do.com/20181221/emrct0as/800kb/hls/hBNS5261193.ts
https://dada-do.com/20181221/emrct0as/800kb/hls/hBNS5261194.ts

然后,把这些网址交给迅雷,让它快速又安全的完成任务就好了。

最后用以下命令将视频片段合成完整的文件:

copy /b *.ts final.ts

这样,将网站播放的视频保存成本地文件的任务就完成了,方便而快捷,你不妨试试!

-2020年9月7日11点49分-