【QT设计师】某视频视频源

article/2025/8/6 16:35:52
#coding:utf8
'''
程序制作:冷鱼闲风
制作日期:2021年12月06日
申明:本程序仅供学习,请勿用作商业用途和违法行为。
ps:程序还有很多值得改进的地方,欢迎大神帮我指出可以优化的地方吧,谢谢大家。
'''#导入必要的库
from pkgutil import get_data
import sys,re,threading,requests,json,os   #系统,正则表达式,多线程,爬虫,json,系统
from PySide2.QtWidgets import *  #Qt
from PySide2.QtCore import QStringListModel  #Qt
from ui_video import Ui_MainWindow #Qt界面
from lxml import etree  #html解析#定义Video类
class Video(QMainWindow, Ui_MainWindow):#设置请求头headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'}#申明列表,存放视频数据VideoName=[]Url=[]ID=0def __init__(self):super().__init__()self.setupUi(self)#显示界面self.show()  self.getdata('xxxxxxxxxx')def getdata(self,url):'''请求数据GET,并HTML格式化后返回。'''r = requests.get(url, headers=self.headers)r.encoding = 'utf-8' self.Iterate(etree.HTML(r.text))def Iterate(self,data):'''赋值给列表'''for i in range(1, 20):#获取到视频列表后,循环20次定位Html元素,提取标题和链接self.base="//div[@class='container']/div[@class='']/ul/li["+str(i)+"]/a/"#把获取到的数据加入列表里面。self.VideoName.append(data.xpath(self.base+"text()")[0])  self.Url.append(data.xpath(self.base+"@href")[0])self.ScreenShow()def ScreenShow(self):'''展示界面,传递数据。'''#开始设置列表,传入数据layout = QVBoxLayout()listview = QListView()listModel = QStringListModel()listModel.setStringList(self.VideoName)listview.setModel(listModel)#设置列表数据self.listView.setModel(listModel) #设置按钮点击事件self.pushButton.clicked.connect(self.Dispose) #设置列表点击事件self.listView.clicked.connect(self.Prompt)    def OpenVideo(self):'''cmd调用系统播放器并传递视频参数'''#子线程,调用cmd命令打开系统播放器并且全屏。os.system(r"cd %SystemDrive%\Program Files\Windows Media Player && wmplayer "+self.rr+" /fullscreen")def Dispose(self):'''爬取界面数据,调用系统播放器。'''#获取标签4的数据,使用正则表达式提取纯数字。把除数字外的字符替换成空self.data = re.compile(r'\D',re.S).sub('', self.label_4.text())  self.progressBar.setValue(60)#获取视频界面的数据r = requests.get(self.Url[int(self.data)], headers=self.headers)r.encoding = 'utf-8'#获取后,截取字符,然后在用json获取视频链接。o=r.text.split('var json = eval(')o=o[1].split('var playerCode')o=o[0][0:len(o[0])-8]rr = json.loads(o)self.rr=rr['video'][0]['mp4Address']['host']+rr['video'][0]['mp4Address']['clips'][0]['urls'][0]self.progressBar.setValue(100)#开启子线程。避免主线程堵塞,防止用户误按Qt界面导致程序无响应thread = threading.Thread(target=self.OpenVideo)thread.start()#隐藏界面self.hide()#等待视频播放器关闭后,杀死程序全部进程。避免占用进程池。sys.exit()def Prompt(self,item):'''选择列表后,提醒交互。'''#设置列表项,方便提取数字self.ID=item.row()self.progressBar.setValue(40)self.label_4.setText("你已经选择"+str(1+item.row())+"号")#程序入口
if __name__ == '__main__':app = QApplication(sys.argv)window = Video()sys.exit(app.exec_())

ui_video.py文件的内容

# -*- coding: utf-8 -*-################################################################################
## Form generated from reading UI file 'video.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *class Ui_MainWindow(object):def setupUi(self, MainWindow):if not MainWindow.objectName():MainWindow.setObjectName(u"MainWindow")MainWindow.resize(334, 385)MainWindow.setMinimumSize(QSize(334, 385))MainWindow.setMaximumSize(QSize(334, 385))self.centralwidget = QWidget(MainWindow)self.centralwidget.setObjectName(u"centralwidget")self.progressBar = QProgressBar(self.centralwidget)self.progressBar.setObjectName(u"progressBar")self.progressBar.setGeometry(QRect(290, 10, 21, 341))self.progressBar.setValue(0)self.progressBar.setOrientation(Qt.Vertical)self.pushButton = QPushButton(self.centralwidget)self.pushButton.setObjectName(u"pushButton")self.pushButton.setGeometry(QRect(20, 310, 141, 41))font = QFont()font.setFamily(u"Aharoni")font.setPointSize(12)font.setBold(True)font.setWeight(75)self.pushButton.setFont(font)self.tabWidget = QTabWidget(self.centralwidget)self.tabWidget.setObjectName(u"tabWidget")self.tabWidget.setGeometry(QRect(20, 10, 251, 291))self.tab = QWidget()self.tab.setObjectName(u"tab")self.listView = QListView(self.tab)self.listView.setObjectName(u"listView")self.listView.setGeometry(QRect(10, 10, 221, 241))self.tabWidget.addTab(self.tab, "")self.tab_2 = QWidget()self.tab_2.setObjectName(u"tab_2")self.label = QLabel(self.tab_2)self.label.setObjectName(u"label")self.label.setGeometry(QRect(10, 40, 171, 16))self.label_2 = QLabel(self.tab_2)self.label_2.setObjectName(u"label_2")self.label_2.setGeometry(QRect(10, 200, 231, 16))self.label_3 = QLabel(self.tab_2)self.label_3.setObjectName(u"label_3")self.label_3.setGeometry(QRect(10, 120, 231, 16))self.tabWidget.addTab(self.tab_2, "")self.label_4 = QLabel(self.centralwidget)self.label_4.setObjectName(u"label_4")self.label_4.setGeometry(QRect(180, 320, 101, 21))MainWindow.setCentralWidget(self.centralwidget)self.statusbar = QStatusBar(MainWindow)self.statusbar.setObjectName(u"statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)self.tabWidget.setCurrentIndex(0)QMetaObject.connectSlotsByName(MainWindow)# setupUidef retranslateUi(self, MainWindow):MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"\u300a\u6742\u5fd7\u5929\u4e0b\u300b\u5ba2\u6237\u7aef", None))self.pushButton.setText(QCoreApplication.translate("MainWindow", u"\u64ad\u653e\u89c6\u9891", None))self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), QCoreApplication.translate("MainWindow", u"\u89c6\u9891\u5217\u8868", None))self.label.setText(QCoreApplication.translate("MainWindow", u"\u672c\u63d2\u4ef6\u662f\u7531\u51b7\u9c7c\u4e0e\u70ed\u732b\u5f00\u53d1", None))self.label_2.setText(QCoreApplication.translate("MainWindow", u"\u672c\u63d2\u4ef6\u5236\u4f5c\u4ec5\u4f9b\u5b66\u4e60\uff0c\u8bf7\u52ff\u7528\u4f5c\u8fdd\u6cd5\u7528\u9014", None))self.label_3.setText(QCoreApplication.translate("MainWindow", u"\u58f0\u660e\uff1a\u611f\u8c22\u6c5f\u897f\u5e7f\u64ad\u7535\u89c6\u53f0\u63d0\u4f9b\u89c6\u9891\u6e90", None))self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), QCoreApplication.translate("MainWindow", u"\u5173\u4e8e\u63d2\u4ef6", None))self.label_4.setText(QCoreApplication.translate("MainWindow", u"\u4f60\u5df2\u7ecf\u9009\u62e90\u53f7", None))# retranslateUi

导入后的效果应该是这样的:因为版权问题,我修改了很多次,具体链接请看图片里。
更详细的教程:https://www.yuque.com/vifanlyrs/bcm/cifyfq
在这里插入图片描述


http://chatgpt.dhexx.cn/article/fRUjmSyK.shtml

相关文章

html页面如何访问rtsp视频源

基本知识: 1. 目前web不能直接访问rtsp视频源(不考虑安装插件的情况) 2. html页面播放视频的四种方式 1.)视频文件(如mpeg,webm,部署最简单,实时性较差) 2.)webrtc协议, 实时性能最好 3.) websokect 协议, 需要自己封装,也有一些开源和商业库 4.)rtmp协议(需…

H5Stream配置视频源

H5Stream配置视频源 配置视频源主要有两种:配置设备、配置sdk;主要说明两种配置配置方式区别。 方式一:设备方式 此方式可能不支持云台控制,摄像头比较少情况可采用此配置。 方式二:设备SDK 可能很多同学不清楚此模…

Android电视盒子最强看电视app-tvbox配置(视频源)教程

今天给大家分享一下安卓tv上最强的看视频神器-tvbox的配置方法 tvbox是一款影视观看类的软件,各种影视资源都是为你免费提供的,还有海量热门影视为你提供电视直播,让你可以实时在线进行观看以及体验一样,超多影视剧内容你感兴趣的…

使用H5Stream实现rtsp视频流播放,在Vue项目中 (无插件、可多视频源播放、亲测可用)

本文主要介绍用H5Stream 在Web页面播放摄像头的RTSP视频流,从0到1的过程。包括WebSocket代理、h5ss.bat文件 运行一会就自己卡死了、H5ss服务死掉自动定时重启的脚本 等可以遇到的问题。 第一步: 点击这个链接下载 h5s-r12.13.0805.21-win64-release.z…

网络视频源地址抓包分析(3)之获取腾讯视频源码

有朋友问我如何获取网络腾讯的网络视频,今天翻了一下3年前写的代码,发现还能用,但没有太多注释,凑合看吧。获取的网络视频地址无任何广告,为CDN最后返回的结果,可直接播放或下载。有些视频过大,…

苹果海洋视频源直播源文件

苹果海洋视频源文件:【0708视频源.rar】 链接下载: https://wwr.lanzoui.com/i3OlOr4cc4j 二维码下载: 苹果海洋直播源文件:【0708直播源.rar】 链接下载: https://wwr.lanzoui.com/iHm9dr89vvg 二维码下载&…

推荐一款跨平台视频播放器:ZY-Player

欢迎关注我的公众号:「阿拉平平」 有需要的小伙伴可以在微信后台回复 zyplayer 获取安装包 之前和大家安利过一款在线视频播放器:h-player,通过导入视频源就可以聚合播放视频,省去搜索资源的时间。不过可惜的是,作者很…

2021-08-29json

异步加载: 如何实现?不会阻断HTML CSS的下载, defer:只有IE9以下能用 和htmlcss并行下载 也可以这样在里面写:代码可以写到内部 执行: 正常js标签:下载完毕执行,执行完后加载html,…

创建 RTSP RTMP 视频源(Windows/Linux)

1. 前言 由于项目需要实现 视频识别图像分类,网上能用的视频流又很少,所以需要自己搭建视频源进行本地测试。 本文记录在 Windows 以及 Linux 系统分别创建 RTSP、RTMP 视频源 进行测试。 2. 准备 2.1 视频 我们要准备好一份 mp4 格式的视频&#xff…

腾讯爱奇艺优酷

看不懂的 可以进入下面的教程链接 目录 看不懂的 可以进入下面的教程链接what it can do ?how to do ?(点链接进入教程)总结why? what it can do ? 替你在另外一个网站上找到内容(for free&…

爱奇艺、优酷、腾讯视频竞品分析报告2016(二)

接上一篇《爱奇艺、优酷、腾讯视频竞品分析报告2016(一)》 http://milkyqueen520.blog.51cto.com/11233158/1760192 2.4 产品设计与交互 2.4.1 视觉风格 APP设计风格从视觉效果上至少给用户传达了两个信息:一是APP的整体基调。二是APP的目标…

阿里巴巴优酷视频增强和超分辨率挑战的冠军方案:VESR-Net

作者单位:中国科学技术大学、微软亚洲研究院 挑战赛链接:https://tianchi.aliyun.com/competition/entrance/231711/rankingList/1 论文链接:https://arxiv.org/pdf/2003.02115.pdf 译者:Wangsy 看点 视频增强与超分辨率&#xff…

优酷网架构分析

记得以前给大家介绍过视频网站龙头老大YouTube的技术架构,相信大家看了都会有不少的感触,互联网就是这么一个神奇的东西。今天我突然想到,优酷网在国内也算是视频网站的老大了,不知道他的架构相对于YouTube是怎么样的,…

将腾讯视频优酷视频引入到自己网站embed标签的(仅支持PC端)

2019独角兽企业重金招聘Python工程师标准>>> 腾讯视频&#xff1a; 视频原地址&#xff1a; 1&#xff1a;https://v.qq.com/x/cover/ipm2meuu857sw3e.html 2&#xff1a;https://v.qq.com/x/cover/1t9erwhksw1w712.html?vidw0022c2qlrm <embed src“https://im…

优酷、YouTube、Twitter及JustinTV视频网站架构设计笔记

本文是整理的关于优酷、YouTube、Twitter及JustinTV几个视频网站的架构或笔记&#xff0c;对于不管是视频网站、门户网站或者其它的网站&#xff0c;在架构上都有一定的参考意义&#xff0c;毕竟成功者的背后总有值得学习的地方&#xff0c;虽然有些文章的发表时间有点久了&…

go语言实战-----31-----流媒体架构设计之直播架构、音视频通话(常见 流媒体协议 解释)

一 直播架构 直播架构例如以某主播在某直播平台直播为例&#xff1a; 1&#xff09;首先向平台请求直播url。2&#xff09;主播得到url。3&#xff09;然后主播开始往该url推流&#xff0c;实际最终是推流至流媒体服务器。4&#xff09;此时&#xff0c;当有用户观看时&#…

优酷网架构

记得以前给大家介绍过视频网站龙头老大YouTube的技术架构&#xff0c;相信大家看了都会有不少的感触&#xff0c;互联网就是这么一个神奇的东西。今天我突然想到&#xff0c;优酷网在国内也算是视频网站的老大了&#xff0c;不知道他的架构相对于YouTube是怎么样的&#xff0c;…

视频综合平台系统架构分析-1

一. 视频综合平台意义 视频综合平台这类设备之前都称为数字视频矩阵。此类设备以其强大的性能&#xff0c;丰富的功能和极高的集成度成为监控中心核心设备。其架构支持视频综合平台同时接入和管理上千路的高清视频数据而不会卡顿崩溃&#xff0c;特别是内部设计了双高速总线成…

大数据环境下的优酷视频数据分析与推荐系统

优酷视频网是中国最具影响力的网络媒体和具有全球影响力的中文视频网站&#xff0c;研究优酷视频标题的网络抓取技术&#xff0c;研究标题语料库的数据库设计方法和用户接口设计实现方法&#xff0c;标题语料的字词处理方法&#xff0c;实现标题语料字词检索、增删改查、统计、…

优酷、YouTube、Twitter及JustinTV几个视频网站的架构

优酷视频网站架构 一、网站基本数据概览据2010年统计&#xff0c;优酷网日均独立访问人数&#xff08;uv)达到了8900万&#xff0c;日均访问量&#xff08;pv&#xff09;更是达到了17亿&#xff0c;优酷凭借这一数据成为google榜单中国内视频网站排名最高的厂商。硬件方面&am…