全屏视频播放页的简单处理

如图:


这里写图片描述

Html:


<!DOCTYPE html>
<html style="height:100%">

<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <link type="text/css" rel="stylesheet" href="../css/website.min.css" />
    <link rel="stylesheet" href="../css/jquery.mCustomScrollbar.min.css">
    <title>
        cima
    </title>
    <meta content="" name="description">
    <meta content="" name="keywords">
    <script type="text/javascript">
        var IS_LOCAL = true;var hasLogined = false;
    </script>
</head>

<body style="height:100%">
    <div class="section_wrap" style="height:100%">
        <div class="relatv full_screen video">
            <div class="clearfix relatv play_area">
                <p class="abs video_info">
                    <span class="dis_ib name">纳税评估常用指标与实际案例分析 I3-5 财务3 </span>
                    <span class="progs">正在学习:<i class="now c_blue">1课时</i>/100课时</span>
                </p>
                <div class="video_src">
                    <object width="100%" height="99%" type="application/x-shockwave-flash" data="http://player.polyv.net/videos/player.swf" id="9b038edc87e330f329463d2a5de38330_9" class="polyvFlashObject"><param name="allowScriptAccess" value="always"><param name="allowFullScreen" value="true"><param name="quality" value="high"><param name="bgcolor" value="#ffffff"><param name="wmode" value="transparent"><param name="flashvars" value="start=0&amp;end=176&amp;ban_history_time=on&amp;watchStartTime=0&amp;vid="></object>
                </div>
            </div>
            <div class="abs main_r">
                <div class="abs link">
                    <a class="trans1 menu curr" href="javascript:;" data-id="1"><span class="no_dis go_next">切换到下一节</span><i class="ico"></i>目录</a>
                    <a class="trans1 note" href="javascript:;" data-id="2"><i class="ico"></i>笔记</a>
                    <a class="trans1 discuss" href="javascript:;" data-id="3"><i class="ico"></i>讨论</a>
                    <a class="trans1 community" href="javascript:;" data-id="4"><i class="ico"></i>社区</a>
                </div>
                <div class="abs control"><i class="abs ico"></i></div>
                <div class="cont main_cont">
                    <ul class="ul for_menu">for_menu
                    </ul>
                    <div class="ul sp_ul for_note">for_note
                    </div>
                    <div class="ul sp_ul for_discs">for_discs
                    </div>
                    <div class="ul sp_ul for_comty">for_comty
                    </div>
                </div>
            </div>
        </div>
    </div>
    <script type="text/javascript" src="../js/jquery.min.js"></script>
    <script type="text/javascript">
    $(function() {
        $('.main_r .link').on('click', 'a', function() {
            var _t = $(this);
            _t.addClass('curr')
                .siblings().removeClass('curr');
            $('.main_r .cont .ul').eq(_t.index()).show()
                .siblings().hide();
        });
        //右侧展开收起
        $('.full_screen .main_r').on('click', '.control', function() {
            if(!$('.full_screen').hasClass('has_spread')) {
                $(this).parent().css("width","0");
                $('.full_screen').css("padding-right","15px");
                $('.full_screen').addClass('has_spread')
            }else {
                $(this).parent().css("width","300px");
                $('.full_screen').css("padding-right","315px");
                $('.full_screen').removeClass('has_spread');
            }
        });
    });

    </script>
</body>

</html>

Css:


.relatv{position: relative;z-index: 1;}
.section_wrap{min-width: 1200px;}
.full_screen{padding-right: 315px;min-height: 320px;min-width: 885px;height: 100%;}
.play_area{background-color: #000;height: 100%;}
.full_screen .main_r{background-color: #000; right: 0;top: 0;z-index: 20;height: 100%;width: 300px;}
.video .main_r .link{left: -52px;top: 50%;z-index: 25;height: 223px;margin-top: -111.5px;}
.video .main_r .link .go_next{background-color: #444;color: #999;text-align: center;width: 100px;}
.video .main_r .link a{background-color: #676767;color: #fff;display: block;height: 37px;line-height: 37px;overflow: hidden; width: 37px;margin-bottom: 20px;}
.video .main_r .link .ico{height: 37px;width: 37px;vertical-align: top;}
.video .main_r .link a.curr{background-color: #0097DD;width: 37px;}
.video .main_r .link a:hover, video .main_r .link a.menu.curr:hover{background-color: #0097DD;margin-left: -37px; width: 74px;}
.full_screen .main_r .control{background-color: #292929;cursor: pointer;left: -15px;top: 0;z-index: 25;height: 100%;overflow: hidden; width: 15px;}
.video .main_r .main_cont, .video .main_r .main_cont .sp_ul{height: 100%;overflow: auto;width: 100%;}

效果预览 http://www.xuecima.com/course/view/44

ps:由于域名问题,此链接有可能失效。


ps:鉴于个人经验有限,所有观点,如有异议,请直接回复讨论(请勿发表攻击言论)。
加入QQ群209952809(需回答问题,答案为csdn);群聊更快解决问题,更happy。
### 回答1: 可以使用PyQt5和OpenCV来实现在label上播放视频,并且支持全屏播放。你可以使用QLabel控件作为视频播放的容器,并在其上显示帧。以下是实现全屏播放的基本步骤: 1. 定义一个QMainWindow窗口,并将其设置为全屏模式。 2. 创建一个QWidget,将其设置为主窗口的中央widget。 3. 在QWidget上创建一个QLabel控件,用于显示视频帧。 4. 使用OpenCV打开视频文件,并逐帧读取视频帧。 5. 将每一帧转换为QImage格式,并在QLabel控件上显示。 6. 添加一个双击事件处理程序,用于将视频切换到全屏模式。 下面是一个简单的示例代码: ```python import sys import cv2 from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QLabel from PyQt5.QtCore import Qt class VideoPlayer(QMainWindow): def __init__(self, parent=None): super(VideoPlayer, self).__init__(parent) self.setWindowTitle('PyQt5 OpenCV Video Player') self.setWindowState(Qt.WindowFullScreen) widget = QWidget() self.setCentralWidget(widget) self.label = QLabel(widget) self.label.setAlignment(Qt.AlignCenter) self.timer = None self.video = cv2.VideoCapture('video.mp4') self.fps = int(self.video.get(cv2.CAP_PROP_FPS)) self.play() self.label.mouseDoubleClickEvent = self.toggle_fullscreen def play(self): ret, frame = self.video.read() if ret: rgb_image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) h, w, ch = rgb_image.shape bytes_per_line = ch * w q_image = QImage(rgb_image.data, w, h, bytes_per_line, QImage.Format_RGB888) pixmap = QPixmap.fromImage(q_image) self.label.setPixmap(pixmap.scaled(self.label.size(), Qt.KeepAspectRatio)) self.timer = self.startTimer(1000//self.fps) def toggle_fullscreen(self, event): if self.isFullScreen(): self.showNormal() else: self.showFullScreen() def timerEvent(self, event): self.play() if __name__ == '__main__': app = QApplication(sys.argv) player = VideoPlayer() player.show() sys.exit(app.exec_()) ``` 这个示例代码使用VideoCapture对象打开名为“video.mp4”的视频文件,并使用QLabel控件在窗口上显示每一帧。使用双击事件处理程序,您可以将视频切换到全屏模式,并在需要时退出全屏模式。 ### 回答2: 要实现在PyQt和OpenCV环境下双击QLabel全屏播放视频,可以按照以下步骤进行: 1. 导入所需的库和模块: ```python from PyQt5 import QtWidgets, QtGui import cv2 ``` 2. 创建一个继承自QLabel的自定义类,用于显示视频: ```python class VideoLabel(QtWidgets.QLabel): def __init__(self, parent=None): super(VideoLabel, self).__init__(parent) self.setScaledContents(True) def mouseDoubleClickEvent(self, event): self.parent().toggleFullScreen() # 双击后切换全屏状态 def resizeEvent(self, event): self.parent().updateVideoFrame() # 窗口大小改变时更新视频帧 ``` 3. 创建一个继承自QMainWindow的主窗口类,并在其中添加视频标签: ```python class MainWindow(QtWidgets.QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.videoLabel = VideoLabel(self) # 创建视频标签 self.setCentralWidget(self.videoLabel) # 设置为中心部件 self.videoCapture = cv2.VideoCapture('video.mp4') # 打开视频文件 self.updateVideoFrame() # 初始化视频帧 def updateVideoFrame(self): ret, frame = self.videoCapture.read() # 读取视频帧 if ret: h, w, ch = frame.shape image = QtGui.QImage(frame.data, w, h, ch * w, QtGui.QImage.Format_RGB888) self.videoLabel.setPixmap(QtGui.QPixmap.fromImage(image)) def toggleFullScreen(self): if self.isFullScreen(): self.showNormal() # 退出全屏 else: self.showFullScreen() # 进入全屏 ``` 4. 创建并启动应用程序: ```python if __name__ == '__main__': import sys app = QtWidgets.QApplication(sys.argv) mainWindow = MainWindow() mainWindow.show() sys.exit(app.exec_()) ``` 通过以上步骤,我们可以在PyQt和OpenCV环境下创建一个能够双击QLabel全屏播放视频的应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值