苦蓝 2023-07-27 10:08 采纳率: 60%
浏览 15
已结题

目前的问题|可能是加密了但是加密协议和密钥被隐藏了

目前的问题是只爬取出来一个30分钟部分乱拼接的视频|可能是加密了但是加密协议和密钥被隐藏了|附网站地址
https://www.daquan5.net/play/?293798-14-0.html

img

                                     Preview  Name                          Headers                        Response              Initiator  X                                                     Timing
   index.m3u8                     1   #EXTM3U
                        2
   index.m3u8
                           #EXT-X-VERSION:3
                        3   #EXT-X-TARGETDURATION:5
                        4   #EXT-X-MEDIA-SEOUENCE:
                        5   #EXTINF:4.166667,
                        6   66384547730000000.ts
                        7   #EXTINF:4.166667,
                        8   66384547730000001.ts
                        9   #EXTINF:4.166667,
                       10     66384547730000002.ts
                       11     #EXTINF:3.958333,
                       12     66384547730000003.tS

有一篇关于
下载并解密的ts文件,发现一部分ts文件能播放,一部分不能播放的博客,但是此文章没有告诉隐藏的加密协议和密钥,如何处理,此章博客如下:
https://blog.csdn.net/weixin_41956627/article/details/125722027
本人参照处理过的代码如下:


import requests
import subprocess

# 获取 m3u8 文件内容
url = 'https://cdn16.yzzy-kb-cdn.com/20230726/14089_b68b569c/2000k/hls/index.m3u8'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.201.400 QQBrowser/11.9.5325.400'}
response = requests.get(url,headers=headers)
m3u8_content = response.text

# 解析 m3u8 文件,获取视频片段 URL
base_url = url.rsplit('/', 1)[0]
video_urls = []
index = 0
for line in m3u8_content.split('\n'):
    if line.startswith('#EXTINF:'):
        for i in video_urls:
            video_url = base_url + '/' + m3u8_content.split('\n')[index+1]
            video_urls.append(video_url)

# 下载视频片段并合并成一个完整的视频文件
with open(f'g:/234/output.ts', 'wb') as f:
    for video_url in video_urls:
        response = requests.get(video_url)
        f.write(response.content)

# 使用 ffmpeg 合并视频片段
subprocess.call(['ffmpeg', '-i', 'g:/234/output.ts', '-c', 'copy', 'g:/234/output.mp4'])
  • 写回答

9条回答 默认 最新

  • Stephen_112 2023-07-27 17:14
    关注

    你已经下载好了ts文件,但是播不了是吧,ffmpeg可以将ts文件转成mp4,现在你由于没有找到ffmpeg导致没转出来mp4,那么你先解决第一个问题就是先把ffmpeg加入到环境变量中,你cd到你的py文件目录,输入ffmpeg,如果显示ffmpeg的相关信息表明环境变量加上了,能够正常访问ffmpeg,这样就不会有第一个错误,第二个问题ts播不出来,有可能是你的文件是损坏的,没有下载完成。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月28日
  • 赞助了问题酬金15元 7月28日
  • 修改了问题 7月28日
  • 修改了问题 7月28日
  • 展开全部