dpt
2025-02-20 e788e467de02ca4795095a4e2e512216f78abc30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#ifndef FACEXMAINWINDOW_H
#define FACEXMAINWINDOW_H
 
#include <QMainWindow>
#include <QMouseEvent>
#include <QRect>
#include <QMediaPlayer>     //播放器
#include <QMediaPlaylist>   //播放队列
#include <QVideoWidget>     //视频显示窗口
#include "qffmpeg.h"
#include "rtspthread.h"
 
//必须加以下内容,否则编译不能通过,为了兼容C和C99标准
#ifndef INT64_C
#define INT64_C
#define UINT64_C
#endif
 
//因为#include <libavcodec/avcodec.h>是C文件,所以需要用extern
extern "C"
{
#include <libavcodec/avcodec.h>     //实现音视频的编解码功能
#include <libavformat/avformat.h>   //实现音视频文件的读取和写入功能,支持多种音视频格式
#include <libavfilter/avfilter.h>
#include <libswscale/swscale.h>
#include <libavutil/frame.h>
}
 
QT_BEGIN_NAMESPACE
namespace Ui {
class FaceXMainWindow;
}
QT_END_NAMESPACE
 
class FaceXMainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit FaceXMainWindow(QWidget *parent = 0);
    ~FaceXMainWindow();
 
    void mousePressEvent(QMouseEvent *event)override;
    void mouseMoveEvent(QMouseEvent *event)override;
    void mouseReleaseEvent(QMouseEvent *event)override;
    void mouseDoubleClickEvent(QMouseEvent *event)override;
 
 
private slots:
    void on_btnSelect_clicked();
 
    void on_toolButton_clicked();
 
    void on_toolButton_3_clicked();
 
    void on_toolButton_2_clicked();
 
    void on_btn_play_clicked();
 
    void on_btn_cut_clicked();
 
    void SetImage(const QImage &image);
 
 
private:
    Ui::FaceXMainWindow *ui;
    QPoint offset;
 
    QRect dragArea;
    bool isDragging;
 
    QMediaPlayer *m_player;
    QMediaPlaylist *m_playerlist;
    QVideoWidget *m_videowidget;
 
    QFFmpeg *m_ffmpeg;
    RtspThread *m_rtspThread;
 
    void setPlayButtonIcon(bool isPlaying);
};
 
#endif // FACEXMAINWINDOW_H