大佬们,我在python中使用QMediaPlayer播放音频,为什么会固定跳过第3个mp3文件?控制台也没有明显提示。。
可以确认音频没有问题,而且我交换音频文件的顺序,还是第3个无法播放。。
虽然可以换别的库,但是我还是想知道这是为什么。。。
[Python] 纯文本查看 复制代码 # 生成exe后报站闪黑框
import sys
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
from PySide6.QtMultimedia import QMediaPlayer, QAudioOutput
from PySide6.QtCore import QUrl,QThread, Signal
from pydub import AudioSegment
class AudioPlayer(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('语音测试软件-V1.0')
self.setFixedSize(600, 400)
# 创建布局
layout = QVBoxLayout()
self.urgent_button=QPushButton('紧急广播')
layout.addWidget(self.urgent_button)
self.urgent_button.clicked.connect(self.play_urgent)
# 设置布局
self.setLayout(layout)
# 初始化媒体播放器
self.player = QMediaPlayer()
self.audio_output = QAudioOutput()
self.player.setAudioOutput(self.audio_output)
def play_urgent(self):
audio_files=["001.mp3","002.mp3","003.mp3","004.mp3"]
print(f"播放列表:\n{'\n'.join(audio_files)}")
self.play_audio_files(audio_files)
def play_stop(self):
self.player.pause()
audio_files=[]
def play_audio_files(self, audio_files):
if not audio_files:
return
current_file = audio_files.pop(0)
self.player.setSource(QUrl.fromLocalFile(current_file))
print("正在播放:"+current_file)
self.player.play()
# 当当前音频播放结束时,播放下一个音频
self.player.playbackStateChanged.connect(lambda state: self.play_audio_files(audio_files) if state == QMediaPlayer.StoppedState else None)
if __name__ == '__main__':
app = QApplication(sys.argv)
player = AudioPlayer()
player.show()
sys.exit(app.exec())
|