zoukankan      html  css  js  c++  java
  • 音频与视频

    QSound

     1 import sys
     2 from PyQt5.QtMultimedia import QSound
     3 from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout
     4 
     5 class Demo(QWidget):
     6     def __init__(self):
     7         super(Demo, self).__init__()
     8         self.sound = QSound('D:ssssss弯弯的月亮.wav')  #实例化一个QSound对象
     9         self.sound.setLoops(QSound.Infinite)  # 设置播放次数
    10         #QSound.Infinite  参数让声音无限循环播放,传入相应的正整数会播放相应的次数
    11 
    12         self.play_btn = QPushButton('播放', self)
    13         self.stop_btn = QPushButton('', self)
    14         self.play_btn.clicked.connect(self.sound.play)  #播放
    15         self.stop_btn.clicked.connect(self.sound.stop)  #停止
    16         self.btn=QPushButton('测试', self)
    17         self.btn.clicked.connect(self.cesi)
    18 
    19         self.h_layout = QHBoxLayout()
    20         self.h_layout.addWidget(self.play_btn)
    21         self.h_layout.addWidget(self.stop_btn)
    22         self.h_layout.addWidget(self.btn)
    23         self.setLayout(self.h_layout)
    24 
    25     def cesi(self):
    26         print(self.sound.isFinished())  #声音播放结束没有。True播放结束
    27         
    28 
    29 if __name__ == '__main__':
    30     app = QApplication(sys.argv)
    31     demo = Demo()
    32     demo.show()
    33     sys.exit(app.exec_())

    QSoundEffect

    可以用来播放无压缩的音频文件(典型的是wav文件),不过我们可以通过这个类以低延迟的方式来播放音频文件,而且可以对文件进行更精细化的操作,该类非常适合用来播放交互音效,如弹出框的提示音,游戏音效等

     1 import sys
     2 from PyQt5.QtCore import Qt, QUrl
     3 from PyQt5.QtMultimedia import QSoundEffect
     4 from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QSlider, QCheckBox, QHBoxLayout, QVBoxLayout
     5 
     6 class Demo(QWidget):
     7     def __init__(self):
     8         super(Demo, self).__init__()
     9         self.sound_effect = QSoundEffect(self)  #实例化QSoundEffect类
    10         self.sound_effect.setSource(QUrl.fromLocalFile('D:ssssss确定.wav'))  # 设置音频
    11         self.sound_effect.setVolume(1.0)  # 设置音量大小,参数为浮点型数值。1.0代表全音量播放,0.0代表静音
    12         self.sound_effect.setLoopCount(2)  # 设置播放次数
    13 
    14         self.play_btn = QPushButton('播放', self)
    15         self.cesi_btn = QPushButton('测试', self)
    16         self.play_btn.clicked.connect(self.sound_effect.play)
    17         #self.sound_effect.play()  播放声音
    18 
    19         self.cesi_btn.clicked.connect(self.func)
    20 
    21         self.stop_btn = QPushButton('', self)
    22         self.stop_btn.clicked.connect(self.sound_effect.stop)
    23         #self.sound_effect.stop()   停
    24 
    25         self.slider = QSlider(Qt.Horizontal, self)  #实例化一个水平滑动条
    26         self.slider.setRange(0, 10)
    27         self.slider.setValue(10)
    28         self.slider.valueChanged.connect(self.set_volume_func)
    29 
    30         self.checkbox = QCheckBox('Mute', self)
    31         self.checkbox.stateChanged.connect(self.mute_func)
    32 
    33         self.h_layout = QHBoxLayout()
    34         self.v_layout = QVBoxLayout()
    35         self.h_layout.addWidget(self.play_btn)
    36         self.h_layout.addWidget(self.stop_btn)
    37         self.h_layout.addWidget(self.cesi_btn)
    38         self.h_layout.addWidget(self.checkbox)
    39         self.v_layout.addWidget(self.slider)
    40         self.v_layout.addLayout(self.h_layout)
    41         self.setLayout(self.v_layout)
    42 
    43         self.sound_effect.playingChanged.connect(lambda :print('正在播放'))
    44         #音频开始播放时发出信号。播放一次发出一次
    45         self.sound_effect.volumeChanged.connect(lambda: print('音量改变'))
    46         #音量改变时发出信号
    47         self.sound_effect.mutedChanged.connect(lambda: print('静音状态改变'))
    48         #静音状态改变时发出信号
    49         self.sound_effect.loopCountChanged.connect(lambda: print('循环次数改变了'))
    50         #循环次数改变时发出信号
    51         self.sound_effect.loopsRemainingChanged.connect(lambda: print('剩余循环次数变了'))
    52         #剩余循环次数改变时发出信号
    53         #self.sound_effect.loadedChanged.connect(lambda: print('开始装载'))
    54         #开始装载时发出信号
    55         #self.sound_effect.statusChanged.connect(lambda: print('????'))
    56         self.sound_effect.sourceChanged.connect(lambda: print('音频源改变'))
    57         #音频源改变时发出信号
    58         
    59         #categoryChanged   ????
    60 
    61 
    62     def func(self):
    63         #s=self.sound_effect.Status  #????
    64         #s=self.sound_effect.isMuted()  #是否静音
    65         #s = self.sound_effect.isPlaying() #是否正在播放
    66         #s = self.sound_effect.loopCount()  #返回循环次数
    67         #s = self.sound_effect.loopsRemaining()#  返回剩余的播放次数
    68         self.sound_effect.setSource(QUrl.fromLocalFile('D:ssssss弯弯的月亮.wav'))  # 设置音频
    69 
    70 
    71     def set_volume_func(self):
    72         self.sound_effect.setVolume(self.slider.value() / 10)
    73 
    74     def mute_func(self):
    75         if self.sound_effect.isMuted():
    76             #self.sound_effect.isMuted()  是否静音.True已经静音
    77             self.sound_effect.setMuted(False)   #设置非静音
    78         else:
    79             self.sound_effect.setMuted(True)  #设置静音
    80 
    81 if __name__ == '__main__':
    82     app = QApplication(sys.argv)
    83     demo = Demo()
    84     demo.show()
    85     sys.exit(app.exec_())

    QMediaPlayer

    QMediaPlayer是一个高层次的媒体播放器类,它非常强大,用它我们既可以播放音频,也可以播放视频

    播放一个音频:

     1 import sys
     2 from PyQt5.QtCore import QUrl
     3 from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
     4 from PyQt5.QtWidgets import QApplication, QWidget
     5 
     6 class Demo(QWidget):
     7     def __init__(self):
     8         super(Demo, self).__init__()
     9         self.player = QMediaPlayer(self)  # 实例化一个媒体播放器
    10         self.media_content = QMediaContent(QUrl.fromLocalFile('D:ssssss弯弯的月亮.mp3'))
    11         #实例化一个媒体源
    12         # self.player.setMedia(QMediaContent(QUrl('http://example.com/music.mp3')))
    13         self.player.setMedia(self.media_content)  # 给播放器设置媒体源
    14         self.player.setVolume(80)  # 设置音量。100为默认值(最高音量),传入0相当于静音
    15         self.player.play()  #播放
    16 
    17 if __name__ == '__main__':
    18     app = QApplication(sys.argv)
    19     demo = Demo()
    20     demo.show()
    21     sys.exit(app.exec_())

    播放音频列表:

     1 import sys
     2 from PyQt5.QtCore import QUrl
     3 from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent, QMediaPlaylist
     4 from PyQt5.QtWidgets import QApplication, QWidget
     5 
     6 class Demo(QWidget):
     7     def __init__(self):
     8         super(Demo, self).__init__()
     9         self.playlist = QMediaPlaylist(self)  # 实例化一个播放列表
    10         self.player = QMediaPlayer(self)  #实例化一个播放器
    11         self.player.setPlaylist(self.playlist)  #给播放器设置播放列表
    12 
    13         self.playlist.addMedia(QMediaContent(QUrl.fromLocalFile(r'C:UsersmingDesktopaa音乐陈百强 - 偏偏喜欢你.mp3')))
    14         #给播放列表添加媒体源
    15         self.playlist.addMedia(QMediaContent(QUrl.fromLocalFile(r'C:UsersmingDesktopaa音乐凤凰传奇 - 月亮之上.mp3')))
    16         self.playlist.addMedia(QMediaContent(QUrl.fromLocalFile(r'C:UsersmingDesktopaa音乐饶天亮 - 做你的爱人.mp3')))
    17         self.playlist.setPlaybackMode(QMediaPlaylist.Loop)  #设置播放模式
    18         #QMediaPlaylist.CurrentItemOnce=0   当前内容播放一次
    19         #QMediaPlaylist.CurrentItemInLoop=1  单曲循环
    20         #QMediaPlaylist.Sequential=2          顺序播放
    21         #QMediaPlaylist.Loop=3               列表循环
    22         #QMediaPlaylist.Random=4              随机播放
    23         self.playlist.setCurrentIndex(2)  # 设置当前要进行播放文件,传入2代表播放第三个文件
    24 
    25         self.player.setVolume(80)  #设置音量
    26         self.player.play()   #播放
    27 
    28 if __name__ == '__main__':
    29     app = QApplication(sys.argv)
    30     demo = Demo()
    31     demo.show()
    32     sys.exit(app.exec_())

    播放视频文件:

    播放视频列表:

     1 import sys
     2 from PyQt5.QtCore import QUrl
     3 from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent, QMediaPlaylist
     4 from PyQt5.QtMultimediaWidgets import QVideoWidget
     5 from PyQt5.QtWidgets import QApplication, QWidget
     6 #注意播放视频还需要安装视频解码器哦
     7 
     8 class Demo(QWidget):
     9     def __init__(self):
    10         super(Demo, self).__init__()
    11         self.playlist = QMediaPlaylist(self)  #实例化一个播放列表
    12         self.video_widget = QVideoWidget(self)  #实例化一个视频显示窗口
    13         self.video_widget.resize(self.width(), self.height())#设置视频显示窗口的大小
    14 
    15         self.player = QMediaPlayer(self) #实例化一个播放器
    16         self.player.setPlaylist(self.playlist)  #给播放器设置播放列表
    17         self.player.setVideoOutput(self.video_widget)  # 设置播放设备。播放设备是视频显示窗口
    18 
    19         self.playlist.addMedia(QMediaContent(QUrl.fromLocalFile(r'D:/ss/ssss/images/video1.mp4')))
    20         # 给播放列表添加视频源
    21         self.playlist.addMedia(QMediaContent(QUrl.fromLocalFile(r'D:/ss/ssss/images/video2.mp4')))
    22         self.playlist.addMedia(QMediaContent(QUrl.fromLocalFile(r'D:/ss/ssss/images/video3.mp4')))
    23         self.playlist.setPlaybackMode(QMediaPlaylist.Loop)  #设置播放模式
    24         # QMediaPlaylist.CurrentItemOnce=0   当前内容播放一次
    25         #QMediaPlaylist.CurrentItemInLoop=1  单曲循环
    26         #QMediaPlaylist.Sequential=2          顺序播放
    27         # QMediaPlaylist.Loop=3               列表循环
    28         # QMediaPlaylist.Random=4              随机播放
    29         self.playlist.setCurrentIndex(0)  # 设置当前要进行播放文件,传入0代表播放第1个文件
    30 
    31         self.player.setVolume(80)  #设置音量
    32         self.player.play()  #播放
    33 
    34 if __name__ == '__main__':
    35     app = QApplication(sys.argv)
    36     demo = Demo()
    37     demo.show()
    38     sys.exit(app.exec_())

    播放一个视频:

     1 import sys
     2 from PyQt5.QtCore import QUrl
     3 from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
     4 from PyQt5.QtMultimediaWidgets import QVideoWidget
     5 from PyQt5.QtWidgets import QApplication, QWidget
     6 #注意播放视频还需要安装视频解码器哦
     7 
     8 class Demo(QWidget):
     9     def __init__(self):
    10         super(Demo, self).__init__()
    11         self.video_widget = QVideoWidget(self)  #实例化一个视频显示窗口
    12         self.video_widget.resize(self.width(), self.height())#设置视频窗口的大小
    13 
    14         self.player = QMediaPlayer(self) #实例化一个播放器
    15         self.player.setVideoOutput(self.video_widget)  # 设置播放设备。播放设备是视频窗口对象
    16 
    17         self.player.setMedia(QMediaContent(QUrl.fromLocalFile(r'D:/ss/ssss/images/video1.mp4')))
    18         # 给播放器添加视频源
    19 
    20         self.player.setVolume(80)  #设置音量
    21         self.player.play()  #播放
    22 
    23 if __name__ == '__main__':
    24     app = QApplication(sys.argv)
    25     demo = Demo()
    26     demo.show()
    27     sys.exit(app.exec_())
  • 相关阅读:
    正则匹配整数或小数
    文本超出点点点
    订单页面布局
    数据库连接池 maxActive,maxIdle,maxWait参数
    dll静态调用和动态调用
    Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.GetConnection
    sql server调优
    AdPlus
    010 Editor
    WinDBG相关
  • 原文地址:https://www.cnblogs.com/liming19680104/p/10434962.html
Copyright © 2011-2022 走看看