视频解析网站(视频解析网站)


【点击查看】低成本上班族靠谱副业好项目 | 拼多多无货源创业7天起店爆单玩法

【点击查看】逆林创业记 | 拼多多电商店铺虚拟类项目新玩法(附完整词表&检测工具)

【点击查看】逆林创业记 | 小白ai写作一键生成爆文速成课

领300个信息差项目,见公众号【逆林创业记】(添加请备注:网站)

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

文章目录

错误演示

打开CCTV直播,我们会看到当前直播的栏目

我们可以通过抓包软件直接获取直播的地址

这不是特别容易吗?一下就可以获取到我们的真实地址了呀!

WAIT,我们先去解析一下我们的代码

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

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

名称地址

index.m3u8

index.m3u8

cdrmcctv1_1_md.m3u8

cdrmcctv1_1_td.m3u8

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

名称地址是否成功显示页面

index.m3u8

index.m3u8

cdrmcctv1_1_md.m3u8

cdrmcctv1_1_td.m3u8

我们可以发现,第二个链接可以选择清晰度,而第三第四个链接则是选择清晰度之后的视频地址。

在这里插入图片描述

我们多次切换后发现,我们出现了几个清晰度不同的链接

清晰度链接

流畅

标清

高清

超清

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

放大招 硕鼠硕鼠,无食我黍

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

硕鼠硕鼠,无食我麦

现在就给大家推荐一个解析网站,当然它不提供存储,仅仅是解析罢了

我们可以看到的是,我们已经打开了我们的网页了,然后我们直接输入这样的网址,点击开始我们可以看到这样的界面

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

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

原来这就是最后的链接,原来这就是最终的东西

于是我们将这个东西发到我们的地址栏中进行测试,没想到真的成功了呀!

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

硕鼠硕鼠,无食我苗

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

那么如果这样算的话,我们的视频应该是在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)-1
			self.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)-1
			self.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)-1
			self.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了

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ3361245237,本站将立刻清除。