safesight/plugins/alarm/actions/clip_action.h
sladro 80e7abcd08
Some checks are pending
CI / host-build (push) Waiting to run
CI / rk3588-cross-build (push) Waiting to run
优化性能
2026-01-06 16:26:39 +08:00

37 lines
1.0 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;
std::unique_ptr<IUploader> uploader_;
std::shared_ptr<PacketRingBuffer> packet_buffer_;
};
} // namespace rk3588