p26001-store-acs-soc-fw-app/video/zlmediakit/Service.h
2026-09-28 21:33:04 +08:00

121 lines
3.8 KiB
C++

#ifndef C85BB91A_0670_4C40_AB2B_A96B8DDBC346
#define C85BB91A_0670_4C40_AB2B_A96B8DDBC346
/*
*******************************************************************************
* INCLUDE
*******************************************************************************
*/
#include <Poco/URI.h>
#include "Poco/Dynamic/Struct.h"
#include "Poco/Tuple.h"
#include "Poco/JSON/Object.h"
#include "Poco/JSON/Parser.h"
#include "Poco/JSON/Query.h"
#include "Poco/JSON/JSONException.h"
#include <Poco/Util/IniFileConfiguration.h>
#include <Poco/AutoPtr.h>
namespace Video
{
namespace ZLMediaKit
{
/*
*******************************************************************************
* CLASS DECLARE
*******************************************************************************
*/
class Service
{
public:
struct StremPusherProxyInfo
{
int code = 0;
std::string msg;
int status = 1;
uint64_t liveSeconds;
uint64_t republishCount;
};
struct StreamProxyInfo
{
int code = 0;
std::string msg;
int status = 1;
uint64_t liveSecs;
uint64_t rePullCount;
};
public:
static std::string getDefaultHost();
static Poco::Dynamic::Array getMediaList(std::string schema = "", std::string app = "", std::string stream = "");
static bool isMediaOnline(std::string schema, std::string app, std::string stream);
static Poco::Tuple<int, std::string> addStreamPusherProxy(std::string schema, std::string app, std::string stream,
std::string url, std::string rtp_type = "1");
static int delStreamPusherProxy(std::string key);
static int getStremPusherProxyInfo(std::string key, StremPusherProxyInfo& info);
static int startSendRtp(std::string app, std::string stream, std::string ssrc, std::string url, std::string port,
std::string udp = "1");
static int startSendRtpPassive(std::string app, std::string stream, std::string ssrc, std::string udp = "1");
static int stopSendRtp(std::string app, std::string stream, std::string ssrc);
static bool isRecording(std::string app, std::string stream, int type);
static bool startRecord(std::string app, std::string stream, int type, std::string customized_path, int max_second);
static bool stopRecord(std::string app, std::string stream, int type);
static std::string getMp4RecordFile(std::string app, std::string stream, std::string period,
std::string customized_path);
static Poco::Tuple<int, std::string> addStreamProxy(std::string app, std::string stream, std::string url,
int auto_close = 1, int rtp_type = 0);
static bool delStreamProxy(std::string key);
static int getProxyInfo(std::string key, StreamProxyInfo& info);
static Poco::Tuple<int, std::string> close_streams(std::string app, std::string stream, int force = 1);
static Poco::JSON::Object::Ptr getServerConfig();
template <typename T> static T getServerConfigOne(std::string paramKey)
{
auto allConfig = getServerConfig();
T t = allConfig->getValue<T>(paramKey);
return t;
}
static bool setServerConfig(std::string key, std::string val);
static Poco::Dynamic::Array listStreamProxy();
static Poco::Dynamic::Array listStreamPusherProxy();
private:
static Poco::DynamicStruct sendRequest(std::string url);
static Poco::JSON::Object::Ptr sendRequestReturnJson(std::string uri);
static void addSecurityParameter(Poco::URI& uri);
static Poco::AutoPtr<Poco::Util::IniFileConfiguration> loadIniFileConfig();
static int getHttpPort();
};
}
}
#endif