player.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from PyQt5.QtMultimedia import QMediaPlaylist, QMediaContent, QMediaPlayer
  2. from PyQt5.QtCore import Qt, QUrl
  3. import soundfile as sf
  4. from collections import deque
  5. import requests
  6. import json
  7. from config.config import Config
  8. SERVER_URL = Config.CLIENT_CONFIG["server_url"]
  9. INFERENCE_STR = Config.CLIENT_CONFIG["inference_path"]
  10. class Player:
  11. def __init__(self, parent):
  12. self.parent = parent
  13. self.player = QMediaPlayer()
  14. self.player.currentMediaChanged.connect(self.mediaChanged)
  15. self.player.durationChanged.connect(self.durationChanged)
  16. self.player.positionChanged.connect(self.positionChanged)
  17. self.playlist = QMediaPlaylist()
  18. self.playlist_data = []
  19. self.sound_prev_idx = 0
  20. def play(self, playlists, startRow=0, option=QMediaPlaylist.Sequential ):
  21. print(f'in player player.state = {self.player.state()}, {QMediaPlayer.PausedState}')
  22. if self.player.state() == QMediaPlayer.PausedState:
  23. self.player.play()
  24. else:
  25. self.createPlaylist(playlists, startRow, option)
  26. self.playlist.setCurrentIndex(startRow)
  27. self.player.play()
  28. def stop(self):
  29. self.player.stop()
  30. def createPlaylist(self, playlists, startRow=0, option=QMediaPlaylist.Sequential):
  31. self.playlist.clear()
  32. for path in playlists:
  33. url = QUrl.fromLocalFile(path)
  34. self.playlist.addMedia(QMediaContent(url))
  35. self.player.setPlaylist(self.playlist)
  36. self.playlist.setPlaybackMode(option)
  37. def upateVolume(self, vol):
  38. self.player.setVolume(vol)
  39. def mediaChanged(self, e):
  40. self.sound_prev_idx = 0
  41. self.parent.updateMediaChanged(self.playlist.currentIndex())
  42. def durationChanged(self, msec):
  43. if msec>0:
  44. self.parent.updateDurationChanged(self.playlist.currentIndex(), msec)
  45. def positionChanged(self, msec):
  46. if msec>0:
  47. self.parent.updatePositionChanged(self.playlist.currentIndex(), msec)