readthread.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /******************************************************************************
  2. * @文件名 readthread.h
  3. * @功能 读取视频图像数据线程,在线程中解码视频
  4. *
  5. * @开发者 mwl
  6. *
  7. *****************************************************************************/
  8. #ifndef READTHREAD_H
  9. #define READTHREAD_H
  10. #include <QElapsedTimer>
  11. #include <QThread>
  12. #include <QTime>
  13. class VideoDecode;
  14. class VideoCodec;
  15. class ReadThread : public QThread
  16. {
  17. Q_OBJECT
  18. public:
  19. enum PlayState // 视频播放状态
  20. {
  21. play,
  22. end
  23. };
  24. public:
  25. explicit ReadThread(QObject *parent = nullptr);
  26. ~ReadThread() override;
  27. Q_INVOKABLE void setPath(const QString& path);
  28. Q_INVOKABLE void open(const QString& url = QString()); // 打开视频
  29. Q_INVOKABLE void close(); // 关闭视频
  30. const QString& url(); // 获取打开的视频地址
  31. protected:
  32. void run() override;
  33. signals:
  34. void updateImage(const QImage& image); // 将读取到的视频图像发送出去
  35. Q_INVOKABLE void playState(PlayState state); // 视频播放状态发送改变时触发
  36. private:
  37. VideoDecode* m_videoDecode = nullptr; // 视频解码类
  38. VideoCodec* m_videoCodec = nullptr;
  39. QString m_url; // 打开的视频地址
  40. QString m_path; // 视频保存路径
  41. bool m_play = false; // 播放控制
  42. };
  43. #endif // READTHREAD_H