python解决blob视频流下载

1. video标签src指向blob视频下载问题
<video class="vjs-tech" playsinline="playsinline" webkit-playsinline="true" x5-playsinline="true" x5-video-player-type="h5" x5-video-player-fullscreen="false" id="vjs_video_3_html5_api" tabindex="-1" 
src="blob:http://tclearn.cmbchina.cn/5a8c0e2a-0cd9-4a50-ac4e-aa96fdadc15a"/>
因为指向的不是http开头的,是blob开头的,有加密,不能直接下载。
刷新网页,network可以看到http://tclearn.cmbchina.cn:8080/webFile/course/1032/1682761200786/playlist.m3u8 
有好多行video-0000.ts,说明视频被分隔为好多份。
2. python下载ts视频

先安装包

pip install requests
# 用于 AES加解密
pip install pycryptodome

python脚本 get-ts.py

import requests
from Crypto.Cipher import AES
import base64
import binascii

# m3u8请求 返回 #EXT-X-KEY:METHOD=AES-128,URI="/webFile/enc.key",IV=0x1903894e42ae1cdb9eea5bb8fd92963f
# 发现是AES加密 CBC模式,注意这里IV是16进制字符串,需要转为byte
key_url = 'http://tclearn.cmbchina.cn:8080/webFile/enc.key'

# 经postman调用,发现这个网站请求需要请求头,否则会返回资源禁止访问
headers = {
    "Referer": "http://tclearn.cmbchina.cn/",
    "Origin": "http://tclearn.cmbchina.cn"
}
key = requests.get(key_url, headers = headers).content

print('开始下载')
# 下载ts文件  video-0000.ts   video-0213.ts
for i in range(0, 213 + 1):
    a=str(i)
    if len(a) == 1:
        a = '000' + a
    if len(a) == 2:
        a = '00' + a
    if len(a) == 3:
        a = '0' + a
    filename = 'video-'+ a +'.ts'
    ts_url = 'http://tclearn.cmbchina.cn:8080/webFile/course/3653/1680123121435/'+ filename
    res_ts = requests.get(ts_url, headers = headers).content
    # 下载的 video-0000.ts video-0213.ts 文件保存目录 
    with open('D:/upload/tmp/' + filename,'wb') as ts:
        # 解密
        cryptor = AES.new(key, AES.MODE_CBC,  binascii.a2b_hex('1903894e42ae1cdb9eea5bb8fd92963f'))
        ts.write(cryptor.decrypt(res_ts))
        print('下载:' + filename)
print('下载完成')

3. 简单合并ts文件为mp4

combine-ts.py

import os

# 合并ts文件
# 注意这里路径必须双反斜杠,否则cmd命令行无法正常执行
dir_path = 'D:\\upload\\tmp\\'
dir_path2 = 'D:\\upload\\mp4\\'

cmd = 'copy /b ' + dir_path  + '*.ts ' + dir_path2 + 'my.mp4'
#print(cmd)
os.system(cmd)

print('合并完成')
4. 使用ffmpeg处理ts文件转为mp4
步骤3中处理ts为mp4质量不高,只是能正常播放,想要更好的mp4视频,需要ffmpeg
1. http://www.ffmpeg.org/download.html#build-windows  ffmpeg 官网 下载 ffmpeg-master-latest-win64-gpl
解压 添加 D:\Program Files\ffmpeg-master-latest-win64-gpl\bin 到 环境变量 path中
验证是否安装成功  ffmpeg -version
先把生成的多个ts文件合并为一个  copy /b D:\\upload\\tmp\\*.ts D:\\upload\\mp4\\my.ts
然后 ffmpeg -i my.ts  -c copy my.mp4
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值