我们在每天使用新闻的时候大都会以CCTV发布的新闻为准,我们的每天新闻收视率最高的还是我们的总台,大家闲来无事可能也会看一下央视网提供视频直播吧,看看还可以,但是我们可以发现我们完全解析不了,大家看一看便知道了

文章目录

  • 错误演示
  • 放大招
    • 硕鼠硕鼠,无食我黍
    • 硕鼠硕鼠,无食我麦
    • 硕鼠硕鼠,无食我苗
  • 开始爬取咯!
    • Windows的伙伴们
    • 其他操作系统的小伙伴
  • 完整代码
  • 转载声明

错误演示

打开CCTV直播,我们会看到当前直播的栏目
我们可以通过抓包软件直接获取直播的地址

这不是特别容易吗?一下就可以获取到我们的真实地址了呀!
WAIT,我们先去解析一下我们的代码


可是,当我们在PotPlayer里面打开之后发现,我们预期出现的画面并没有出来。那么这种情况肯定就是CCTV进行播放加密了。那我们该如何处理这种问题呢?

我们先尝试着把这四个播放地址全部播放一遍,说不定可以呢?

名称 地址
index.m3u8 https://cctvcncw.v.wscdns.com/live/cctv1_1/index.m3u8?adapt=0&BR=pub
index.m3u8 https://cctvtxyh5c.liveplay.myqcloud.com/live/cdrmcctv1_1/index.m3u8
cdrmcctv1_1_md.m3u8 https://cctvtxyh5c.liveplay.myqcloud.com/live/cdrmcctv1_1_md.m3u8
cdrmcctv1_1_td.m3u8 https://cctvtxyh5c.liveplay.myqcloud.com/live/cdrmcctv1_1_td.m3u8

我们一个一个尝试一下,尝试如下表所示

名称 地址 是否成功 显示页面
index.m3u8 https://cctvcncw.v.wscdns.com/live/cctv1_1/index.m3u8?adapt=0&BR=pub
index.m3u8 https://cctvtxyh5c.liveplay.myqcloud.com/live/cdrmcctv1_1/index.m3u8
cdrmcctv1_1_md.m3u8 https://cctvtxyh5c.liveplay.myqcloud.com/live/cdrmcctv1_1_md.m3u8
cdrmcctv1_1_td.m3u8 https://cctvtxyh5c.liveplay.myqcloud.com/live/cdrmcctv1_1_td.m3u8

我们可以发现,第二个链接可以选择清晰度,而第三第四个链接则是选择清晰度之后的视频地址。
在这里插入图片描述
我们多次切换后发现,我们出现了几个清晰度不同的链接

清晰度 链接
流畅 https://cctvtxyh5c.liveplay.myqcloud.com/live/cdrmcctv1_1_md.m3u8
标清 https://cctvtxyh5c.liveplay.myqcloud.com/live/cdrmcctv1_1_hd.m3u8
高清 https://cctvtxyh5c.liveplay.myqcloud.com/live/cdrmcctv1_1_ud.m3u8
超清 https://cctvtxyh5c.liveplay.myqcloud.com/live/cdrmcctv1_1_td.m3u8

可是这些都无法播放啊!!!!

放大招

硕鼠硕鼠,无食我黍

网上很多人都有各种不同的方法,之前我去一个非常著名的一个论坛就看到了我们如何去播放CCTV的直播,但是方法却十分狗血。 就是去寻找我们网上的一些大神所给我们的M3U8新地址,大多都是在阿里上的。虽然这些也能用,但是毕竟可能会有一种期限,我们不能保证它在任何时候都能够访问,失效了也说不定对吧?所以我们去下载CCTV的视频是最好的。

硕鼠硕鼠,无食我麦

现在就给大家推荐一个解析网站,当然它不提供存储,仅仅是解析罢了
我们可以看到的是,我们已经打开了我们的网页了,然后我们直接输入这样的网址https://tv.cctv.com/live/cctv10/,点击开始我们可以看到这样的界面

点击最新的日期,我们会看到这样的东西

我们再随便点击一个试一下,就会发现这样的链接

原来这就是最后的链接,原来这就是最终的东西
于是我们将这个东西发到我们的地址栏中进行测试,没想到真的成功了呀!

于是我们再次看一下我们的视频,都是五分钟的视频,那么也就说我们一个小时之中就有十二个小片段,那么这样子我们就可以开展爬取了。

硕鼠硕鼠,无食我苗

那我们就开始咯,我们再来看一看这里边的延迟,我现在的时间是九点十三分

那么如果这样算的话,我们的视频应该是在002这样的节点上


果然证明我们的猜想,这是可以播放的。那么我们再试一试003呢?

由于我现在本地时间已经到十七分了,所以我们尝试004,发现果然无法访问,那么就是说我们可能会有十分钟的延迟

开始爬取咯!

现在我们就开始爬取了,我们首先就是要获取本地的时间

然后我们开始要我们在分钟的片段上面进行研究,于是就可以写出这样的IF语句,我们为了各种情况都做出了充足的准备!

我们这个时候打印以下这个self.section_all这个对象,如果可以出现当时候的数字编码的话就证明我们逻辑成功了

import time# 定义一个StreamIng类
class StreamIng():def __init__(self,num):self.num = num# 开始运行程序self.get_local_time()def get_local_time(self):# 获取转换后的时间戳localtime = time.localtime()# print(localtime)# 获取现在的年,月,日,小时,分钟self.year = time.strftime("%Y",localtime)self.month = time.strftime("%m",localtime)self.day = time.strftime("%d",localtime)self.hour = time.strftime("%H",localtime)self.minute = time.strftime("%M",localtime)# 获取分段的片段section = int(int(self.minute) / 5)# print(section)# 如果当时间不超过05分时,播放上一时刻视频if section == 0:self.hour = int(self.hour)-1self.section_all = "012"# 如果时间不超过50分,播放本时刻00段视频elif section < 10:self.section_all = "00"+ str(section)# 播放0段视频else:self.section_all = "0"+ str(section)print(self.section_all)StreamIng(10)

Windows的伙伴们

接下来我们就要来使用FFplay来播放视频了,逻辑十分简单。首先我们先要下载FFplay这个模块,大家可以直接到FFmpeg官网下载,也可以使用我在这里提供给大家的直接解压使用的,点击下载

然后将我们的FFpay这个放在和代码文件同一目录当中

def play_stream_video(self):path = 'http://cntv.vod.cdn.myqcloud.com/flash/live_back/nettv_cctv'+str(self.num)+"/cctv"+str(self.num)+"-"+str(self.year)+"-"+str(self.month)+"-"+str(self.day)+"-"+str(self.hour)+"-"+str(self.section_all)+".mp4"print(path)# 使用FFplay播放视频os.popen("ffplay -i "+path)

这是我们拼接视频的代码,然后我们直接使用FFplay进行播放

于是我们就可以播放了


我们接下来就是要开始进行直播的逻辑分析了,我们现在的想法是播放完一个视频,然后立马去播放下一个视频。这是我们的一个思路,但是我们该如何实现呢?

我们设置播放完成后立马关闭窗口并且设置我们窗口的标题

我们再来一个循环,这是一个无限循环,循环的时间是5分钟那么也就是300秒

import time
import os
import requests# 定义一个StreamIng类
class StreamIng():def __init__(self,num):self.num = num# 开始运行程序self.get_local_time()def get_local_time(self):# 获取转换后的时间戳localtime = time.localtime()# print(localtime)# 获取现在的年,月,日,小时,分钟self.year = time.strftime("%Y",localtime)self.month = time.strftime("%m",localtime)self.day = time.strftime("%d",localtime)self.hour = time.strftime("%H",localtime)self.minute = time.strftime("%M",localtime)# 获取分段的片段section = int(int(self.minute) / 5)# print(section)# 如果当时间不超过05分时,播放上一时刻视频if section == 0:self.hour = int(self.hour)-1self.section_all = "012"# 如果时间不超过50分,播放本时刻00段视频elif section < 10:self.section_all = "00"+ str(section)# 播放0段视频else:self.section_all = "0"+ str(section)# print(self.section_all)self.play_stream_video()def play_stream_video(self):self.path = 'http://cntv.vod.cdn.myqcloud.com/flash/live_back/nettv_cctv'+str(self.num)+"/cctv"+str(self.num)+"-"+str(self.year)+"-"+str(self.month)+"-"+str(self.day)+"-"+str(self.hour)+"-"+str(self.section_all)+".mp4"# print(path)# -window_title : 设置窗口标题self.window_title = "CCTV"+str(self.num)+"直播播放"+str(self.hour)+str(self.section_all)+".mp4"# -autoexit : 播放完成后自动退出# 使用FFplay播放视频os.popen("ffplay "+" -window_title "+self.window_title+" -autoexit "+self.path)if __name__ == '__main__':while True:StreamIng(10)time.sleep(300)

我们的程序就大致完工了,这是不是很好呢?

其他操作系统的小伙伴

这个我还真不知道怎么弄,主要是我本地也没有这样的环境,没有时间去操作,所以这就只能是遗憾了。我在这里呢就介绍一下下载的代码,其实很简单

我们获取地址,然后我们再获取,然后再写入文件,那么就成功了

完整代码

import time
import os
import requests# 定义一个StreamIng类
class StreamIng():def __init__(self,num):self.num = num# 开始运行程序self.get_local_time()def get_local_time(self):# 获取转换后的时间戳localtime = time.localtime()# print(localtime)# 获取现在的年,月,日,小时,分钟self.year = time.strftime("%Y",localtime)self.month = time.strftime("%m",localtime)self.day = time.strftime("%d",localtime)self.hour = time.strftime("%H",localtime)self.minute = time.strftime("%M",localtime)# 获取分段的片段section = int(int(self.minute) / 5)# print(section)# 如果当时间不超过05分时,播放上一时刻视频if section == 0:self.hour = int(self.hour)-1self.section_all = "012"# 如果时间不超过50分,播放本时刻00段视频elif section < 10:self.section_all = "00"+ str(section)# 播放0段视频else:self.section_all = "0"+ str(section)# print(self.section_all)self.play_stream_video()def play_stream_video(self):self.path = 'http://cntv.vod.cdn.myqcloud.com/flash/live_back/nettv_cctv'+str(self.num)+"/cctv"+str(self.num)+"-"+str(self.year)+"-"+str(self.month)+"-"+str(self.day)+"-"+str(self.hour)+"-"+str(self.section_all)+".mp4"# print(path)# -window_title : 设置窗口标题self.window_title = "CCTV"+str(self.num)+"直播播放"+str(self.hour)+str(self.section_all)+".mp4"# -autoexit : 播放完成后自动退出# 使用FFplay播放视频os.popen("ffplay "+" -window_title "+self.window_title+" -autoexit "+self.path)self.download_video()def download_video(self):video = requests.get(self.path)with open("./"+self.window_title,"wb+")as video_write:video_write.write(video.content)video_write.close()if __name__ == '__main__':while True:StreamIng(10)time.sleep(300)


如果播放有问题,那么我们就直接下载

这样我们解析CCTV的直播就OK了

转载声明

博客在2021年5月16日首发自CSDN,如需转载,请附上原文链接:无法找到CCTV直播MP4地址?七十行代码,简单使用FFplay直接观看还是下载CCTV栏目都轻松搞定(Python利用FLVCD硕鼠解析CCTV直播,FFplay播放并下载视频)

无法找到CCTV直播MP4地址?七十行代码,简单使用FFplay直接观看还是下载CCTV栏目都轻松搞定(Python利用FLVCD硕鼠解析CCTV直播,FFplay播放并下载视频)相关推荐

  1. python 找到装饰器_[译] 12步轻松搞定python装饰器

    呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需要你了解一些函数式编程的概念,当然还有理解在python中定义和调用函数 ...

  2. 学习笔记(01):150讲轻松搞定Python网络爬虫-爬虫介绍(资料在第一节中下载)

    立即学习:https://edu.csdn.net/course/play/24756/280645?utm_source=blogtoedu 应用领域: 1.搜索引擎是一个巨大的爬虫程序:例如百度. ...

  3. 学习笔记(47):150讲轻松搞定Python网络爬虫-高速下载王者荣耀高清壁纸(1)

    立即学习:https://edu.csdn.net/course/play/24756/284634?utm_source=blogtoedu 解码: from urllib import parse ...

  4. 学习笔记(1):150讲轻松搞定Python网络爬虫-爬虫介绍(资料在第一节中下载)

    立即学习:https://edu.csdn.net/course/play/24756/280645?utm_source=blogtoedu 什么是爬虫:爬虫是人类请求网站行为的程序.可以自动请求w ...

  5. 计算机c盘丢失,电脑C盘丢失的视频文件怎么恢复?方法讲解,轻松搞定

    电脑C盘丢失的视频文件怎么恢复?在日常的工作以及生活当中,有很多的传统媒体文件充斥着.例如:闲暇时,会找一些直播视频来放松自己.工作中,会找一些网络课程来提升自己.但是,在此过程中也会因为一些失误,导 ...

  6. 轻松搞定表白女朋友:Android版APP (零基础也可直接下载软件)

    轻松搞定表白女朋友:Android版软件 (零基础也可直接下载软件) 在我们平时生活当中,经常会看到一些表白女朋友的html网页,但是Android端的表白软件可以说是基本没有,笔者在全网搜了一下,就 ...

  7. 轻松搞定阿里OSS文件上传和图片下载

    轻松搞定阿里OSS文件上传和图片下载 目录 1. 阿里云oss账号准备   1.1 注册阿里云账号,并开通OSS存储服务   1.2 创建RAM子用户并使用子账户的AccessKeyId和Access ...

  8. 在matlab中怎么录制音频_怎么录制淘宝页面中的视频?简单方法,轻松搞定

    原标题:怎么录制淘宝页面中的视频?简单方法,轻松搞定 怎么录制淘宝页面中的视频?当前足不出户,大家就可以在很多的电商平台购买到自己心仪的商品.这其中商机也就产生了,如果不太想上班,或者说想要自己当老板 ...

  9. python分布爬虫_13天搞定Python分布爬虫(第七天)(Scrapy)

    43-爬虫的基本使用 pip install Scrapy 注:windows平台需要依赖pywin32,pip install pypiwin32 创建工程:开发工具命令行(Terminal):sc ...

最新文章

  1. python配置文件密码管理_python – 可以在django管理员中实现“下次登录时更改密码”类型功能吗?...
  2. 分布式数据库管理系统
  3. 跟我一起学.NetCore之选项(Options)核心类型简介
  4. 强制消除Xcode警告的方法
  5. Maven项目有红叉,文件却没有错误,已解决
  6. Asp.net MVC3 Razor语法小记
  7. struts-step
  8. Android APK XML解析与反编译方法
  9. VC++进行ActiveX控件的开发
  10. 计算机输入网站打不开,电脑打不开网页怎么办
  11. 【HTML教程(一)】HTML标签、模板和实例
  12. 如何在金仓数据库KingbaseES中使用pg_get_function_arg_default函数
  13. 你的面子到底值几斤几两
  14. FTP服务器获取文件,并解析GRB2文件获取数据
  15. 【Unity3D日常开发】获取天气信息以及地方位置
  16. cml sml区别_CAL.CML.SML的关系
  17. 基于springboot的人事管理系统【毕业设计,源码,论文】
  18. 拉伯证券|A股延续强势格局 北向资金开年以来净买入超1500亿元
  19. 苹果cmsv10仿芒果TV小说免费简约模板源码
  20. jupyterlab下载遇到的问题及解决方案

热门文章

  1. Win32学习笔记(五)消息
  2. AI芯片:几种常见类型的AI芯片
  3. 「Do.026」看完这篇再决定要不要升级Mac OS Catalina
  4. 私藏系列:你或许从未听过的20个安卓开发工具
  5. eloqua邮件服务器,ORACLEELOQUA投递优化云服务产品.PDF
  6. 前端基础题集合---ing
  7. UC-Android逆向工程师 面试题1的分析
  8. 用SymPy验证圆锥曲线性质
  9. XAMPP安装配置(最)详细教程图解
  10. Linux堆内存修改及清理命令