Recorder.h 2.39 KB
Newer Older
xiongziliang committed
1
/*
xiongziliang committed
2
 * Copyright (c) 2016 The ZLMediaKit project authors. All Rights Reserved.
3
 *
4
 * This file is part of ZLMediaKit(https://github.com/xia-chu/ZLMediaKit).
5
 *
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
#ifndef SRC_MEDIAFILE_RECORDER_H_
#define SRC_MEDIAFILE_RECORDER_H_
13

xiongziliang committed
14 15
#include <memory>
#include <string>
夏楚 committed
16

17
namespace mediakit {
xiongziliang committed
18
class MediaSinkInterface;
19
class ProtocolOption;
xiongziliang committed
20

21 22 23 24 25
class RecordInfo {
public:
    time_t start_time;  // GMT 标准时间,单位秒
    float time_len;     // 录像长度,单位秒
    off_t file_size;    // 文件大小,单位 BYTE
夏楚 committed
26 27 28 29 30 31 32
    std::string file_path;   // 文件路径
    std::string file_name;   // 文件名称
    std::string folder;      // 文件夹路径
    std::string url;         // 播放路径
    std::string app;         // 应用名称
    std::string stream;      // 流 ID
    std::string vhost;       // 虚拟主机
33 34
};

xiongziliang committed
35
class Recorder{
36
public:
37 38 39 40 41 42
    typedef enum {
        // 录制hls
        type_hls = 0,
        // 录制MP4
        type_mp4 = 1
    } type;
43

44 45 46
    /**
     * 获取录制文件绝对路径
     * @param type hls还是MP4录制
47 48 49
     * @param vhost 虚拟主机
     * @param app 应用名
     * @param stream_id 流id
50
     * @param customized_path 录像文件保存自定义根目录,为空则采用配置文件设置
51 52
     * @return  录制文件绝对路径
     */
夏楚 committed
53
    static std::string getRecordPath(type type, const std::string &vhost, const std::string &app, const std::string &stream_id,const std::string &customized_path = "");
54

55
    /**
56 57
     * 创建录制器对象
     * @param type hls还是MP4录制
58 59 60
     * @param vhost 虚拟主机
     * @param app 应用名
     * @param stream_id 流id
61
     * @param customized_path 录像文件保存自定义根目录,为空则采用配置文件设置
62
     * @param max_second mp4录制最大切片时间,单位秒,置0则采用配置文件配置
63 64
     * @return 对象指针,可能为nullptr
     */
65
    static std::shared_ptr<MediaSinkInterface> createRecorder(type type, const std::string &vhost, const std::string &app, const std::string &stream_id, const ProtocolOption &option);
66

xiongziliang committed
67
private:
68 69
    Recorder() = delete;
    ~Recorder() = delete;
70 71
};

xiongziliang committed
72 73
} /* namespace mediakit */
#endif /* SRC_MEDIAFILE_RECORDER_H_ */