#pragma once #include "action_base.h" #include "../uploaders/uploader_base.h" #include "../packet_ring_buffer.h" #include #include namespace rk3588 { class ClipAction : public IAlarmAction { public: ~ClipAction() override = default; bool Init(const SimpleJson& config) override; void Execute(AlarmEvent& event, std::shared_ptr frame) override; void Drain() override {} void Stop() override {} std::string Name() const override { return "clip"; } void SetPacketBuffer(std::shared_ptr buffer) { packet_buffer_ = buffer; } private: std::string ProcessClipFromPackets(const std::vector>& 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 uploader_; std::shared_ptr packet_buffer_; }; } // namespace rk3588