SimplePlayerWindow.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #ifndef SIMPLEPLAYERWINDOW_H
  2. #define SIMPLEPLAYERWINDOW_H
  3. #include <QApplication>
  4. #include <QDebug>
  5. #include <QFileDialog>
  6. #include <QHBoxLayout>
  7. #include <QLabel>
  8. #include <QMainWindow>
  9. #include <QMessageBox>
  10. #include <QPushButton>
  11. #include <QSlider>
  12. #include <QTimer>
  13. #include <QVBoxLayout>
  14. #include "player_adapter.h"
  15. #include "video_renderer.h"
  16. #include "opengl_video_renderer.h"
  17. using namespace av::player;
  18. /**
  19. * @brief 简单的播放器UI示例
  20. *
  21. * 这个类展示了如何使用新的PlayerAdapter来构建播放器UI
  22. */
  23. class SimplePlayerWindow : public QMainWindow
  24. {
  25. Q_OBJECT
  26. public:
  27. explicit SimplePlayerWindow(QWidget* parent = nullptr);
  28. ~SimplePlayerWindow();
  29. private slots:
  30. void openFile();
  31. void playPause();
  32. void stop();
  33. void seek();
  34. void setVolume();
  35. void toggleMute();
  36. void setPlaybackSpeed();
  37. // 播放器事件处理
  38. void onStateChanged(PlayerState state);
  39. void onMediaInfoChanged(const MediaInfo& info);
  40. void onPositionChanged(qint64 position);
  41. void onVolumeChanged(double volume);
  42. void onMutedChanged(bool muted);
  43. void onPlaybackSpeedChanged(double speed);
  44. void onErrorOccurred(const QString& error);
  45. void onStatsUpdated(const PlaybackStats& stats);
  46. // 渲染器相关
  47. void onRendererTypeChanged(const QString& type);
  48. void onOpenGLRendererInitialized();
  49. private:
  50. void setupUI();
  51. void connectSignals();
  52. void updateUI();
  53. QString formatTime(qint64 microseconds);
  54. private:
  55. std::unique_ptr<PlayerAdapter> m_playerAdapter;
  56. VideoRenderer* m_videoRenderer;
  57. OpenGLVideoRenderer* m_openGLVideoRenderer;
  58. // UI组件
  59. QLabel* m_fileLabel;
  60. QLabel* m_stateLabel;
  61. QLabel* m_infoLabel;
  62. QLabel* m_timeLabel;
  63. QLabel* m_volumeLabel;
  64. QLabel* m_speedLabel;
  65. QLabel* m_statsLabel;
  66. QPushButton* m_openButton;
  67. QPushButton* m_playPauseButton;
  68. QPushButton* m_stopButton;
  69. QPushButton* m_muteButton;
  70. QSlider* m_positionSlider;
  71. QSlider* m_volumeSlider;
  72. QSlider* m_speedSlider;
  73. bool m_seeking = false;
  74. };
  75. #endif // SIMPLEPLAYERWINDOW_H