HxNvr/HxRtspBase/HxVideoLiveStream.h
2024-04-17 15:31:43 +08:00

93 lines
1.6 KiB
C++

#ifndef HXVIDEOLIVESTREAM_H
#define HXVIDEOLIVESTREAM_H
#include "HxThread.h"
#include "HxVideoFrame.h"
#include <QObject>
#include <QUuid>
typedef enum
{
Idling,
Connecting,
Connected,
Disconnected
} ConnectionStatus;
typedef enum
{
LiveStream,
File,
}ConnectType;
typedef void (*OnVideoStatusCallback)(QString uuid, ConnectionStatus status);
typedef void (*OnVideoStreamCallback)(QString uuid, HxVideoFrame videoframe);
class HxVideoLiveStream : public HxThread
{
Q_OBJECT
public:
HxVideoLiveStream(int millisecond = 10);
virtual ~HxVideoLiveStream();
public:
/**
* @brief setUrl
* @param url
*/
void set_url(QString url, ConnectType type = LiveStream);
/**
* @brief setUuid
* @param uuid
*/
void set_uuid(QString uuid);
/**
* @brief set_status_callback
* @param callback
*/
void set_status_callback(OnVideoStatusCallback callback);
/**
* @brief set_stream_callback
* @param callback
*/
void set_stream_callback(OnVideoStreamCallback callback);
/**
* @brief connect
* @return
*/
ConnectionStatus connect();
void pause(bool status);
void position(int value);
protected:
void action() override;
void continue_with() override;
public:
int64_t duartion;
private:
QString url;
QString uuid;
ConnectType m_type;
bool m_pause = false;
long long pts, dts;
ConnectionStatus status = Idling;
AVFormatContext *ifmt_ctx;
OnVideoStatusCallback status_callback;
OnVideoStreamCallback stream_callback;
};
#endif // HXVIDEOLIVESTREAM_H