mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-22 19:00:01 +08:00
Merge branch 'dev' of https://github.com/chatop2020/ZLMediaKit
This commit is contained in:
commit
eccb1a664c
@ -198,7 +198,8 @@ void FFmpegSource::startTimer(int timeout_ms) {
|
||||
//同步查找流
|
||||
if (!src) {
|
||||
//流不在线,重新拉流
|
||||
if(strongSelf->_replay_ticker.elapsedTime() > 10 * 1000){
|
||||
//@子悦,这里原先是10秒超时,实际发现10秒不够,我改成20秒了
|
||||
if(strongSelf->_replay_ticker.elapsedTime() > 20 * 1000){
|
||||
//上次重试时间超过10秒,那么再重试FFmpeg拉流
|
||||
strongSelf->_replay_ticker.resetTime();
|
||||
strongSelf->play(strongSelf->_src_url, strongSelf->_dst_url, timeout_ms, [](const SockException &) {});
|
||||
|
@ -158,6 +158,8 @@ static void do_http_hook(const string &url,const ArgsType &body,const function<v
|
||||
|
||||
static ArgsType make_json(const MediaInfo &args){
|
||||
ArgsType body;
|
||||
GET_CONFIG(string,mediaServerId,General::kMediaServerId);
|
||||
body["mediaserverid"] = mediaServerId;
|
||||
body["schema"] = args._schema;
|
||||
body["vhost"] = args._vhost;
|
||||
body["app"] = args._app;
|
||||
@ -319,6 +321,8 @@ void installWebHook(){
|
||||
return;
|
||||
}
|
||||
ArgsType body;
|
||||
GET_CONFIG(string,mediaServerId,General::kMediaServerId);
|
||||
body["mediaserverid"] = mediaServerId;
|
||||
body["regist"] = bRegist;
|
||||
body["schema"] = sender.getSchema();
|
||||
body["vhost"] = sender.getVhost();
|
||||
@ -344,6 +348,8 @@ void installWebHook(){
|
||||
|
||||
static auto getRecordInfo = [](const RecordInfo &info) {
|
||||
ArgsType body;
|
||||
GET_CONFIG(string,mediaServerId,General::kMediaServerId);
|
||||
body["mediaserverid"] = mediaServerId;
|
||||
body["start_time"] = (Json::UInt64) info.start_time;
|
||||
body["file_size"] = (Json::UInt64) info.file_size;
|
||||
body["time_len"] = info.time_len;
|
||||
@ -382,6 +388,8 @@ void installWebHook(){
|
||||
return;
|
||||
}
|
||||
ArgsType body;
|
||||
GET_CONFIG(string,mediaServerId,General::kMediaServerId);
|
||||
body["mediaserverid"] = mediaServerId;
|
||||
body["ip"] = sender.get_peer_ip();
|
||||
body["port"] = sender.get_peer_port();
|
||||
body["id"] = sender.getIdentifier();
|
||||
@ -400,6 +408,8 @@ void installWebHook(){
|
||||
}
|
||||
|
||||
ArgsType body;
|
||||
GET_CONFIG(string,mediaServerId,General::kMediaServerId);
|
||||
body["mediaserverid"] = mediaServerId;
|
||||
body["schema"] = sender.getSchema();
|
||||
body["vhost"] = sender.getVhost();
|
||||
body["app"] = sender.getApp();
|
||||
@ -445,6 +455,8 @@ void installWebHook(){
|
||||
}
|
||||
|
||||
ArgsType body;
|
||||
GET_CONFIG(string,mediaServerId,General::kMediaServerId);
|
||||
body["mediaserverid"] = mediaServerId;
|
||||
body["ip"] = sender.get_peer_ip();
|
||||
body["port"] = sender.get_peer_port();
|
||||
body["id"] = sender.getIdentifier();
|
||||
|
@ -18,6 +18,25 @@
|
||||
using namespace toolkit;
|
||||
|
||||
namespace mediakit {
|
||||
string generalGuid() {
|
||||
srand(time(0));
|
||||
std::string random_str("");
|
||||
for (int i = 0; i < 6; ++i) {
|
||||
for (int j = 0; j < 8; j++)
|
||||
switch (rand() % 2) {
|
||||
case 1:
|
||||
random_str += ('A' + rand() % 26);
|
||||
break;
|
||||
default:
|
||||
random_str += ('0' + rand() % 10);
|
||||
break;
|
||||
}
|
||||
if (i < 5)
|
||||
random_str += "-";
|
||||
}
|
||||
|
||||
return random_str;
|
||||
}
|
||||
|
||||
bool loadIniConfig(const char *ini_path){
|
||||
string ini;
|
||||
@ -58,6 +77,7 @@ const string kBroadcastHttpBeforeAccess = "kBroadcastHttpBeforeAccess";
|
||||
//通用配置项目
|
||||
namespace General{
|
||||
#define GENERAL_FIELD "general."
|
||||
const string kMediaServerId = GENERAL_FIELD"mediaServerId";
|
||||
const string kFlowThreshold = GENERAL_FIELD"flowThreshold";
|
||||
const string kStreamNoneReaderDelayMS = GENERAL_FIELD"streamNoneReaderDelayMS";
|
||||
const string kMaxStreamWaitTimeMS = GENERAL_FIELD"maxStreamWaitMS";
|
||||
@ -80,6 +100,7 @@ onceToken token([](){
|
||||
mINI::Instance()[kPublishToMP4] = 0;
|
||||
mINI::Instance()[kMergeWriteMS] = 0;
|
||||
mINI::Instance()[kModifyStamp] = 0;
|
||||
mINI::Instance()[kMediaServerId] = generalGuid();
|
||||
},nullptr);
|
||||
|
||||
}//namespace General
|
||||
|
@ -154,6 +154,8 @@ extern const string kBroadcastReloadConfig;
|
||||
|
||||
////////////通用配置///////////
|
||||
namespace General{
|
||||
//每个流媒体服务器的ID(GUID)
|
||||
extern const string kMediaServerId;
|
||||
//流量汇报事件流量阈值,单位KB,默认1MB
|
||||
extern const string kFlowThreshold;
|
||||
//流无人观看并且超过若干时间后才触发kBroadcastStreamNoneReader事件
|
||||
|
@ -46,8 +46,15 @@ string Recorder::getRecordPath(Recorder::type type, const string &vhost, const s
|
||||
}
|
||||
//Here we use the customized file path.
|
||||
if (!customized_path.empty()) {
|
||||
mp4FilePath = customized_path + "/";
|
||||
/*开始删除*/
|
||||
// mp4FilePath = customized_path + "/";
|
||||
/*删除结束*/
|
||||
/*开始添加*/
|
||||
//@子悦,你上次说这里为了安全不能跳出目录,但实际操作过程中因为存储挂载位置不由流媒体决定,为了方便保存到挂载存储上,我这边做成可以跳出自已目录,你看是否合适,或者有其他办法可以处理这事
|
||||
return customized_path + "/"+mp4FilePath;
|
||||
/*开始添加*/
|
||||
}
|
||||
|
||||
return File::absolutePath(mp4FilePath, recordPath);
|
||||
}
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user