mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
update dvr, support segment plan
This commit is contained in:
parent
6f19a83114
commit
2d1c28cff9
7 changed files with 230 additions and 23 deletions
|
@ -127,7 +127,7 @@ public:
|
|||
SrsDvrPlan();
|
||||
virtual ~SrsDvrPlan();
|
||||
public:
|
||||
virtual int initialize(SrsSource* source);
|
||||
virtual int initialize(SrsSource* source, SrsRequest* req);
|
||||
virtual int on_publish(SrsRequest* req) = 0;
|
||||
virtual void on_unpublish() = 0;
|
||||
virtual int on_meta_data(SrsOnMetaDataPacket* metadata);
|
||||
|
@ -137,14 +137,11 @@ protected:
|
|||
virtual int flv_open(std::string stream, std::string path);
|
||||
virtual int flv_close();
|
||||
public:
|
||||
static SrsDvrPlan* create_plan();
|
||||
static SrsDvrPlan* create_plan(std::string vhost);
|
||||
};
|
||||
|
||||
/**
|
||||
* default session plan:
|
||||
* 1. start dvr when session start(publish).
|
||||
* 2. stop dvr when session stop(unpublish).
|
||||
* 3. always dvr to file: dvr_path/app/stream.flv
|
||||
* session plan: reap flv when session complete(unpublish)
|
||||
*/
|
||||
class SrsDvrSessionPlan : public SrsDvrPlan
|
||||
{
|
||||
|
@ -156,6 +153,29 @@ public:
|
|||
virtual void on_unpublish();
|
||||
};
|
||||
|
||||
/**
|
||||
* segment plan: reap flv when duration exceed.
|
||||
*/
|
||||
class SrsDvrSegmentPlan : public SrsDvrPlan
|
||||
{
|
||||
private:
|
||||
int64_t duration;
|
||||
int64_t starttime;
|
||||
// in config, in ms
|
||||
int segment_duration;
|
||||
public:
|
||||
SrsDvrSegmentPlan();
|
||||
virtual ~SrsDvrSegmentPlan();
|
||||
public:
|
||||
virtual int initialize(SrsSource* source, SrsRequest* req);
|
||||
virtual int on_publish(SrsRequest* req);
|
||||
virtual void on_unpublish();
|
||||
virtual int on_audio(SrsSharedPtrMessage* audio);
|
||||
virtual int on_video(SrsSharedPtrMessage* video);
|
||||
private:
|
||||
virtual int update_duration(SrsSharedPtrMessage* msg);
|
||||
};
|
||||
|
||||
/**
|
||||
* dvr(digital video recorder) to record RTMP stream to flv file.
|
||||
* TODO: FIXME: add utest for it.
|
||||
|
@ -175,7 +195,7 @@ public:
|
|||
* when system initialize(encoder publish at first time, or reload),
|
||||
* initialize the dvr will reinitialize the plan, the whole dvr framework.
|
||||
*/
|
||||
virtual int initialize();
|
||||
virtual int initialize(SrsRequest* req);
|
||||
/**
|
||||
* publish stream event,
|
||||
* when encoder start to publish RTMP stream.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue