RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1304433
Accepted
Владимир
Владимир
Asked:2022-07-12 16:50:10 +0000 UTC2022-07-12 16:50:10 +0000 UTC 2022-07-12 16:50:10 +0000 UTC

如何在 PyQt5 QtMultimedia 中随机或按顺序播放播放列表中的视频文件

  • 772

这段代码无限循环播放文件夹中的同一个文件。尽管按照计划,它应该无限循环播放文件夹中的所有内容。怎么做才对?

主文件

import sys
from PyQt5 import QtCore
from PyQt5.QtMultimedia import QMediaPlayer, QMediaPlaylist, QMediaContent
from PyQt5.QtWidgets import QDialog, QApplication
from PyQt5.uic import loadUi
import glob
import random
import os


class New(QDialog):
    def __init__(self):
        super(New, self).__init__()

        loadUi("video_form.ui", self)

        self.player = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        self.playlist = QMediaPlaylist()


    def my_video(self):
        list = [1, 2]
        video_path = 'D:/путь к папке с видео'

        mmm = random.choice(list)
        for filename in glob.glob(os.path.join(video_path, f'{mmm}.mp4')):
            self.playlist.addMedia(QMediaContent(QtCore.QUrl.fromLocalFile(filename)))
            self.player.setVideoOutput(self.VIDEO_widget)
            self.playlist.setCurrentIndex(1)
            self.playlist.setPlaybackMode(QMediaPlaylist.CurrentItemInLoop)
            self.player.setPlaylist(self.playlist)
            self.player.play()


    def closeEvent(self, e):
        super().closeEvent(e)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = New()
    window.my_video()
    window.show()
    sys.exit(app.exec_())

video_form.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Dialog</class>
 <widget class="QDialog" name="Dialog">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>1024</width>
    <height>620</height>
   </rect>
  </property>
  <property name="minimumSize">
   <size>
    <width>1024</width>
    <height>620</height>
   </size>
  </property>
  <property name="maximumSize">
   <size>
    <width>1024</width>
    <height>620</height>
   </size>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <property name="styleSheet">
   <string notr="true">background-color: rgb(85, 170, 255);</string>
  </property>
  <property name="sizeGripEnabled">
   <bool>false</bool>
  </property>
  <property name="modal">
   <bool>false</bool>
  </property>
  <widget class="QGroupBox" name="groupBox_7">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>10</y>
     <width>1000</width>
     <height>600</height>
    </rect>
   </property>
   <property name="minimumSize">
    <size>
     <width>1000</width>
     <height>600</height>
    </size>
   </property>
   <property name="maximumSize">
    <size>
     <width>700</width>
     <height>600</height>
    </size>
   </property>
   <property name="styleSheet">
    <string notr="true">
background-color: qlineargradient(spread:reflect, x1:0, y1:1, x2:0.492, y2:1, stop:0.0197044 rgba(0, 0, 93, 218), stop:1 rgba(255, 255, 255, 255));</string>
   </property>
   <property name="title">
    <string>ххх</string>
   </property>
   <widget class="QVideoWidget" name="VIDEO_widget" native="true">
    <property name="geometry">
     <rect>
      <x>190</x>
      <y>60</y>
      <width>640</width>
      <height>480</height>
     </rect>
    </property>
    <property name="sizePolicy">
     <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
      <horstretch>0</horstretch>
      <verstretch>0</verstretch>
     </sizepolicy>
    </property>
    <property name="minimumSize">
     <size>
      <width>640</width>
      <height>480</height>
     </size>
    </property>
    <property name="maximumSize">
     <size>
      <width>640</width>
      <height>480</height>
     </size>
    </property>
    <property name="styleSheet">
     <string notr="true">background-color: rgb(0, 0, 0);</string>
    </property>
   </widget>
  </widget>
 </widget>
 <customwidgets>
  <customwidget>
   <class>QVideoWidget</class>
   <extends>QWidget</extends>
   <header>PyQt5.QtMultimediaWidgets</header>
   <container>1</container>
  </customwidget>
 </customwidgets>
 <resources/>
 <connections/>
</ui>
pyqt5
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Владимир
    2022-07-13T01:14:59Z2022-07-13T01:14:59Z

    主文件

    import sys
    from PyQt5 import QtCore
    from PyQt5.QtMultimedia import QMediaPlayer, QMediaPlaylist, QMediaContent
    from PyQt5.QtWidgets import QDialog, QApplication
    from PyQt5.uic import loadUi
    
    
    class New(QDialog):
        def __init__(self):
            super(New, self).__init__()
    
            loadUi("video_form.ui", self)
    
            self.player = QMediaPlayer(None, QMediaPlayer.VideoSurface)
            self.playlist = QMediaPlaylist()
    
        def my_video1(self):
             self.playlist.addMedia(
                 QMediaContent(QtCore.QUrl.fromLocalFile('D:\\путь\\1.mp4')))
             self.playlist.addMedia(
                 QMediaContent(QtCore.QUrl.fromLocalFile('D:\\путь\\2.mp4')))
             self.playlist.addMedia(
                 QMediaContent(QtCore.QUrl.fromLocalFile('D:\\путь\\3.mp4')))
    
             self.player.setVideoOutput(self.VIDEO_widget)
             self.playlist.setPlaybackMode(QMediaPlaylist.Random)
             self.player.setPlaylist(self.playlist)
             self.player.play()
    
        def closeEvent(self, e):
            super().closeEvent(e)
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = New()
        window.my_video1()
        window.show()
        sys.exit(app.exec_())
    

    video_form.ui

    <?xml version="1.0" encoding="UTF-8"?>
    <ui version="4.0">
     <class>Dialog</class>
     <widget class="QDialog" name="Dialog">
      <property name="geometry">
       <rect>
        <x>0</x>
        <y>0</y>
        <width>1024</width>
        <height>620</height>
       </rect>
      </property>
      <property name="minimumSize">
       <size>
        <width>1024</width>
        <height>620</height>
       </size>
      </property>
      <property name="maximumSize">
       <size>
        <width>1024</width>
        <height>620</height>
       </size>
      </property>
      <property name="windowTitle">
       <string>Dialog</string>
      </property>
      <property name="styleSheet">
       <string notr="true">background-color: rgb(85, 170, 255);</string>
      </property>
      <property name="sizeGripEnabled">
       <bool>false</bool>
      </property>
      <property name="modal">
       <bool>false</bool>
      </property>
      <widget class="QGroupBox" name="groupBox_7">
       <property name="geometry">
        <rect>
         <x>10</x>
         <y>10</y>
         <width>1000</width>
         <height>600</height>
        </rect>
       </property>
       <property name="minimumSize">
        <size>
         <width>1000</width>
         <height>600</height>
        </size>
       </property>
       <property name="maximumSize">
        <size>
         <width>700</width>
         <height>600</height>
        </size>
       </property>
       <property name="styleSheet">
        <string notr="true">
    background-color: qlineargradient(spread:reflect, x1:0, y1:1, x2:0.492, y2:1, stop:0.0197044 rgba(0, 0, 93, 218), stop:1 rgba(255, 255, 255, 255));</string>
       </property>
       <property name="title">
        <string>ххх</string>
       </property>
       <widget class="QVideoWidget" name="VIDEO_widget" native="true">
        <property name="geometry">
         <rect>
          <x>190</x>
          <y>60</y>
          <width>640</width>
          <height>480</height>
         </rect>
        </property>
        <property name="sizePolicy">
         <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>
        </property>
        <property name="minimumSize">
         <size>
          <width>640</width>
          <height>480</height>
         </size>
        </property>
        <property name="maximumSize">
         <size>
          <width>640</width>
          <height>480</height>
         </size>
        </property>
        <property name="styleSheet">
         <string notr="true">background-color: rgb(0, 0, 0);</string>
        </property>
       </widget>
      </widget>
     </widget>
     <customwidgets>
      <customwidget>
       <class>QVideoWidget</class>
       <extends>QWidget</extends>
       <header>PyQt5.QtMultimediaWidgets</header>
       <container>1</container>
      </customwidget>
     </customwidgets>
     <resources/>
     <connections/>
    </ui>
    
    

    您可以应用(QMediaPlaylist.Loop)并无限循环播放播放列表

    • 1

相关问题

  • PyQt5:带延迟的线路输出

  • 如何制作工具提示

  • 在 PyQt5 中读取字符串

  • 如何更改 QLabel 的背景?

  • python,PyQt5 库中的错误:ImportError: cannot import name 'QtWebKitWidgets'

  • PyQt5,选择图像时出现“无法读取内存”错误

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5