38 lines
993 B
C++
38 lines
993 B
C++
#pragma once
|
|
|
|
#include "action_base.h"
|
|
#include "../uploaders/uploader_base.h"
|
|
#include "../frame_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 SetFrameBuffer(std::shared_ptr<FrameRingBuffer> buffer) {
|
|
frame_buffer_ = buffer;
|
|
}
|
|
|
|
private:
|
|
std::string ProcessClip(const std::vector<std::shared_ptr<Frame>>& frames, 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<FrameRingBuffer> frame_buffer_;
|
|
};
|
|
|
|
} // namespace rk3588
|