readthread.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /******************************************************************************
  2. * @功能 读取视频图像数据线程,在线程中解码视频
  3. *****************************************************************************/
  4. #ifndef READTHREAD_H
  5. #define READTHREAD_H
  6. #include <QElapsedTimer>
  7. #include <QThread>
  8. #include <QTime>
  9. class VideoDecode;
  10. class ReadThread : public QThread
  11. {
  12. Q_OBJECT
  13. public:
  14. enum PlayState // 视频播放状态
  15. {
  16. play,
  17. end
  18. };
  19. public:
  20. explicit ReadThread(QObject *parent = nullptr);
  21. ~ReadThread() override;
  22. void open(const QString& url = QString()); // 打开视频
  23. void pause(bool flag); // 暂停视频
  24. void close(); // 关闭视频
  25. const QString& url(); // 获取打开的视频地址
  26. void setHWDecoder(bool flag); // 是否使用硬件解码器
  27. protected:
  28. void run() override;
  29. signals:
  30. void updateImage(const QImage& image); // 将读取到的视频图像发送出去
  31. void playState(PlayState state); // 视频播放状态发送改变时触发
  32. private:
  33. VideoDecode* m_videoDecode = nullptr; // 视频解码类
  34. QString m_url; // 打开的视频地址
  35. bool m_play = false; // 播放控制
  36. bool m_pause = false; // 暂停控制
  37. QElapsedTimer m_etime1; // 控制视频播放速度(更精确,但不支持视频后退)
  38. QElapsedTimer m_etime2; // 控制视频播放速度(支持视频后退)
  39. };
  40. #endif // READTHREAD_H