Recorder.h 2.74 KB
Newer Older
xiongziliang committed
1
/*
xiongziliang committed
2
 * Copyright (c) 2016 The ZLMediaKit project authors. All Rights Reserved.
3 4 5
 *
 * This file is part of ZLMediaKit(https://github.com/xiongziliang/ZLMediaKit).
 *
xiongziliang committed
6 7 8
 * 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.
9 10
 */

xiongziliang committed
11 12 13 14 15
#ifndef SRC_MEDIAFILE_RECORDER_H_
#define SRC_MEDIAFILE_RECORDER_H_
#include <memory>
#include <string>
using namespace std;
16
namespace mediakit {
xiongziliang committed
17 18 19
class MediaSinkInterface;

class Recorder{
20
public:
21 22 23 24 25 26
    typedef enum {
        // 录制hls
        type_hls = 0,
        // 录制MP4
        type_mp4 = 1
    } type;
27

28 29 30
    /**
     * 获取录制文件绝对路径
     * @param type hls还是MP4录制
31 32 33 34
     * @param vhost 虚拟主机
     * @param app 应用名
     * @param stream_id 流id
     * @param customized_path 录像文件保存自定义目录,默认为空则自动生成
35 36 37
     * @return  录制文件绝对路径
     */
    static string getRecordPath(type type, const string &vhost, const string &app, const string &stream_id,const string &customized_path = "");
38

39
    /**
40 41
     * 创建录制器对象
     * @param type hls还是MP4录制
42 43 44 45
     * @param vhost 虚拟主机
     * @param app 应用名
     * @param stream_id 流id
     * @param customized_path 录像文件保存自定义目录,默认为空则自动生成
46 47
     * @return 对象指针,可能为nullptr
     */
48
    static std::shared_ptr<MediaSinkInterface> createRecorder(type type, const string &vhost, const string &app, const string &stream_id, const string &customized_path = "");
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79

    /**
     * 获取录制状态
     * @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);

xiongziliang committed
80
private:
81 82
    Recorder() = delete;
    ~Recorder() = delete;
83 84
};

xiongziliang committed
85 86
} /* namespace mediakit */
#endif /* SRC_MEDIAFILE_RECORDER_H_ */