safesight/plugins/alarm/actions/clip_action.h

38 lines
1.1 KiB
C++

#pragma once
#include "action_base.h"
#include "../uploaders/uploader_base.h"
#include "../packet_ring_buffer.h"
#include <memory>
#include <vector>
namespace rk3588 {
class ClipAction : public IAlarmAction {
public:
~ClipAction() override = default;
bool Init(const SimpleJson& config) override;
void Execute(AlarmEvent& event, std::shared_ptr<Frame> frame) override;
void Drain() override {}
void Stop() override {}
std::string Name() const override { return "clip"; }
void SetPacketBuffer(std::shared_ptr<PacketRingBuffer> buffer) { packet_buffer_ = buffer; }
private:
std::string ProcessClipFromPackets(const std::vector<std::shared_ptr<EncodedVideoFrameMeta>>& metas,
const AlarmEvent& event);
std::string GenerateKey(const AlarmEvent& event);
int pre_sec_ = 5;
int post_sec_ = 10;
std::string format_ = "mp4";
int fps_ = 25;
bool use_date_prefix_ = true;
std::unique_ptr<IUploader> uploader_;
std::shared_ptr<PacketRingBuffer> packet_buffer_;
};
} // namespace rk3588