ZLMediaKit/src/Record/Recorder.h

101 lines
3.2 KiB
C++
Raw Normal View History

2019-08-08 19:01:45 +08:00
/*
2020-04-04 20:30:09 +08:00
* Copyright (c) 2016 The ZLMediaKit project authors. All Rights Reserved.
*
* This file is part of ZLMediaKit(https://github.com/xiongziliang/ZLMediaKit).
*
2020-04-04 20:30:09 +08:00
* Use of this source code is governed by MIT license that can be found in the
* LICENSE file in the root of the source tree. All contributing project authors
* may be found in the AUTHORS file in the root of the source tree.
*/
2019-12-04 10:45:38 +08:00
#ifndef SRC_MEDIAFILE_RECORDER_H_
#define SRC_MEDIAFILE_RECORDER_H_
#include <memory>
#include <string>
using namespace std;
namespace mediakit {
2019-12-04 10:45:38 +08:00
class MediaSinkInterface;
class RecordInfo {
public:
time_t start_time; // GMT 标准时间,单位秒
float time_len; // 录像长度,单位秒
off_t file_size; // 文件大小,单位 BYTE
string file_path; // 文件路径
string file_name; // 文件名称
string folder; // 文件夹路径
string url; // 播放路径
string app; // 应用名称
string stream; // 流 ID
string vhost; // 虚拟主机
};
2019-12-04 10:45:38 +08:00
class Recorder{
public:
2020-03-20 11:51:24 +08:00
typedef enum {
// 录制hls
type_hls = 0,
// 录制MP4
type_mp4 = 1
} type;
2019-12-04 18:36:30 +08:00
2020-03-20 11:51:24 +08:00
/**
*
* @param type hls还是MP4录制
2020-02-01 22:58:58 +08:00
* @param vhost
* @param app
* @param stream_id id
* @param customized_path
2020-03-20 11:51:24 +08:00
* @return
*/
static string getRecordPath(type type, const string &vhost, const string &app, const string &stream_id,const string &customized_path = "");
2020-02-01 22:58:58 +08:00
2020-03-20 11:51:24 +08:00
/**
*
* @param type hls还是MP4录制
2020-02-01 22:58:58 +08:00
* @param vhost
* @param app
* @param stream_id id
* @param customized_path
2020-03-20 11:51:24 +08:00
* @return nullptr
*/
static std::shared_ptr<MediaSinkInterface> createRecorder(type type, const string &vhost, const string &app, const string &stream_id, const string &customized_path = "");
2020-04-05 09:26:29 +08:00
/**
*
* @param type hls还是MP4录制
* @param vhost
* @param app
* @param stream_id id
* @return
*/
static bool isRecording(type type, const string &vhost, const string &app, const string &stream_id);
/**
*
* @param type hls还是MP4录制
* @param vhost
* @param app
* @param stream_id id
* @param customized_path
* @return
*/
static bool startRecord(type type, const string &vhost, const string &app, const string &stream_id,const string &customized_path);
/**
*
* @param type hls还是MP4录制
* @param vhost
* @param app
* @param stream_id id
*/
static bool stopRecord(type type, const string &vhost, const string &app, const string &stream_id);
2019-12-04 10:45:38 +08:00
private:
2020-03-20 11:51:24 +08:00
Recorder() = delete;
~Recorder() = delete;
};
2019-12-04 10:45:38 +08:00
} /* namespace mediakit */
#endif /* SRC_MEDIAFILE_RECORDER_H_ */