Commit eccb1a66 by xiongziliang
parents e26f9972 4132df89
......@@ -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:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论