去除ultraLowDelay配置项

This commit is contained in:
xiongziliang 2020-04-29 11:08:43 +08:00
parent 4fbd45e408
commit f9df7f5217
9 changed files with 15 additions and 22 deletions

View File

@ -29,8 +29,6 @@ maxStreamWaitMS=15000
#某个流无人观看时触发hook.on_stream_none_reader事件的最大等待时间单位毫秒 #某个流无人观看时触发hook.on_stream_none_reader事件的最大等待时间单位毫秒
#在配合hook.on_stream_none_reader事件时可以做到无人观看自动停止拉流或停止接收推流 #在配合hook.on_stream_none_reader事件时可以做到无人观看自动停止拉流或停止接收推流
streamNoneReaderDelayMS=20000 streamNoneReaderDelayMS=20000
#是否开启低延时模式该模式下禁用MSG_MORE,启用TCP_NODEALY延时将降低但数据发送性能将降低
ultraLowDelay=1
#拉流代理是否添加静音音频(直接拉流模式本协议无效) #拉流代理是否添加静音音频(直接拉流模式本协议无效)
addMuteAudio=1 addMuteAudio=1
#拉流代理时如果断流再重连成功是否删除前一次的媒体流数据,如果删除将重新开始, #拉流代理时如果断流再重连成功是否删除前一次的媒体流数据,如果删除将重新开始,
@ -43,8 +41,8 @@ publishToHls=1
#是否默认推流时mp4录像hook接口(on_publish)中可以覆盖该设置 #是否默认推流时mp4录像hook接口(on_publish)中可以覆盖该设置
publishToMP4=0 publishToMP4=0
#合并写缓存大小(单位毫秒)合并写指服务器缓存一定的数据后才会一次性写入socket这样能提高性能但是会提高延时 #合并写缓存大小(单位毫秒)合并写指服务器缓存一定的数据后才会一次性写入socket这样能提高性能但是会提高延时
#在开启低延时模式后,该参数不起作用 #开启后会同时关闭TCP_NODELAY并开启MSG_MORE
mergeWriteMS=300 mergeWriteMS=0
[hls] [hls]
#hls写文件的buf大小调整参数可以提高文件io性能 #hls写文件的buf大小调整参数可以提高文件io性能

View File

@ -516,9 +516,8 @@ static bool isFlushAble_merge(bool is_audio, uint32_t last_stamp, uint32_t new_s
bool FlushPolicy::isFlushAble(uint32_t new_stamp, int cache_size) { bool FlushPolicy::isFlushAble(uint32_t new_stamp, int cache_size) {
bool ret = false; bool ret = false;
GET_CONFIG(bool, ultraLowDelay, General::kUltraLowDelay);
GET_CONFIG(int, mergeWriteMS, General::kMergeWriteMS); GET_CONFIG(int, mergeWriteMS, General::kMergeWriteMS);
if (ultraLowDelay || mergeWriteMS <= 0) { if (mergeWriteMS <= 0) {
//关闭了合并写或者合并写阈值小于等于0 //关闭了合并写或者合并写阈值小于等于0
ret = isFlushAble_default(_is_audio, _last_stamp, new_stamp, cache_size); ret = isFlushAble_default(_is_audio, _last_stamp, new_stamp, cache_size);
} else { } else {

View File

@ -61,7 +61,6 @@ const string kFlowThreshold = GENERAL_FIELD"flowThreshold";
const string kStreamNoneReaderDelayMS = GENERAL_FIELD"streamNoneReaderDelayMS"; const string kStreamNoneReaderDelayMS = GENERAL_FIELD"streamNoneReaderDelayMS";
const string kMaxStreamWaitTimeMS = GENERAL_FIELD"maxStreamWaitMS"; const string kMaxStreamWaitTimeMS = GENERAL_FIELD"maxStreamWaitMS";
const string kEnableVhost = GENERAL_FIELD"enableVhost"; const string kEnableVhost = GENERAL_FIELD"enableVhost";
const string kUltraLowDelay = GENERAL_FIELD"ultraLowDelay";
const string kAddMuteAudio = GENERAL_FIELD"addMuteAudio"; const string kAddMuteAudio = GENERAL_FIELD"addMuteAudio";
const string kResetWhenRePlay = GENERAL_FIELD"resetWhenRePlay"; const string kResetWhenRePlay = GENERAL_FIELD"resetWhenRePlay";
const string kPublishToRtxp = GENERAL_FIELD"publishToRtxp"; const string kPublishToRtxp = GENERAL_FIELD"publishToRtxp";
@ -74,13 +73,12 @@ onceToken token([](){
mINI::Instance()[kStreamNoneReaderDelayMS] = 20 * 1000; mINI::Instance()[kStreamNoneReaderDelayMS] = 20 * 1000;
mINI::Instance()[kMaxStreamWaitTimeMS] = 15 * 1000; mINI::Instance()[kMaxStreamWaitTimeMS] = 15 * 1000;
mINI::Instance()[kEnableVhost] = 0; mINI::Instance()[kEnableVhost] = 0;
mINI::Instance()[kUltraLowDelay] = 1;
mINI::Instance()[kAddMuteAudio] = 1; mINI::Instance()[kAddMuteAudio] = 1;
mINI::Instance()[kResetWhenRePlay] = 1; mINI::Instance()[kResetWhenRePlay] = 1;
mINI::Instance()[kPublishToRtxp] = 1; mINI::Instance()[kPublishToRtxp] = 1;
mINI::Instance()[kPublishToHls] = 1; mINI::Instance()[kPublishToHls] = 1;
mINI::Instance()[kPublishToMP4] = 0; mINI::Instance()[kPublishToMP4] = 0;
mINI::Instance()[kMergeWriteMS] = 300; mINI::Instance()[kMergeWriteMS] = 0;
},nullptr); },nullptr);
}//namespace General }//namespace General

View File

@ -160,8 +160,6 @@ extern const string kStreamNoneReaderDelayMS;
extern const string kMaxStreamWaitTimeMS; extern const string kMaxStreamWaitTimeMS;
//是否启动虚拟主机 //是否启动虚拟主机
extern const string kEnableVhost; extern const string kEnableVhost;
//超低延时模式,默认打开,打开后会降低延时但是转发性能会稍差
extern const string kUltraLowDelay;
//拉流代理时是否添加静音音频 //拉流代理时是否添加静音音频
extern const string kAddMuteAudio; extern const string kAddMuteAudio;
//拉流代理时如果断流再重连成功是否删除前一次的媒体流数据,如果删除将重新开始, //拉流代理时如果断流再重连成功是否删除前一次的媒体流数据,如果删除将重新开始,
@ -174,7 +172,7 @@ extern const string kPublishToHls ;
//是否默认推流时mp4录像hook接口(on_publish)中可以覆盖该设置 //是否默认推流时mp4录像hook接口(on_publish)中可以覆盖该设置
extern const string kPublishToMP4 ; extern const string kPublishToMP4 ;
//合并写缓存大小(单位毫秒)合并写指服务器缓存一定的数据后才会一次性写入socket这样能提高性能但是会提高延时 //合并写缓存大小(单位毫秒)合并写指服务器缓存一定的数据后才会一次性写入socket这样能提高性能但是会提高延时
//在开启低延时模式后,该参数不起作用 //开启后会同时关闭TCP_NODELAY并开启MSG_MORE
extern const string kMergeWriteMS ; extern const string kMergeWriteMS ;
}//namespace General }//namespace General

View File

@ -606,8 +606,8 @@ void HttpSession::sendNotFound(bool bClose) {
} }
void HttpSession::setSocketFlags(){ void HttpSession::setSocketFlags(){
GET_CONFIG(bool,ultraLowDelay,General::kUltraLowDelay); GET_CONFIG(int, mergeWriteMS, General::kMergeWriteMS);
if(!ultraLowDelay) { if(mergeWriteMS > 0) {
//推流模式下关闭TCP_NODELAY会增加推流端的延时但是服务器性能将提高 //推流模式下关闭TCP_NODELAY会增加推流端的延时但是服务器性能将提高
SockUtil::setNoDelay(_sock->rawFD(), false); SockUtil::setNoDelay(_sock->rawFD(), false);
//播放模式下开启MSG_MORE会增加延时但是能提高发送性能 //播放模式下开启MSG_MORE会增加延时但是能提高发送性能

View File

@ -228,8 +228,8 @@ inline void RtmpPusher::send_metaData(){
} }
void RtmpPusher::setSocketFlags(){ void RtmpPusher::setSocketFlags(){
GET_CONFIG(bool,ultraLowDelay,General::kUltraLowDelay); GET_CONFIG(int, mergeWriteMS, General::kMergeWriteMS);
if(!ultraLowDelay) { if(mergeWriteMS > 0) {
//提高发送性能 //提高发送性能
setSendFlags(SOCKET_DEFAULE_FLAGS | FLAG_MORE); setSendFlags(SOCKET_DEFAULE_FLAGS | FLAG_MORE);
SockUtil::setNoDelay(_sock->rawFD(), false); SockUtil::setNoDelay(_sock->rawFD(), false);

View File

@ -529,8 +529,8 @@ int RtmpSession::totalReaderCount(MediaSource &sender) {
} }
void RtmpSession::setSocketFlags(){ void RtmpSession::setSocketFlags(){
GET_CONFIG(bool,ultraLowDelay,General::kUltraLowDelay); GET_CONFIG(int, mergeWriteMS, General::kMergeWriteMS);
if(!ultraLowDelay) { if(mergeWriteMS > 0) {
//推流模式下关闭TCP_NODELAY会增加推流端的延时但是服务器性能将提高 //推流模式下关闭TCP_NODELAY会增加推流端的延时但是服务器性能将提高
SockUtil::setNoDelay(_sock->rawFD(), false); SockUtil::setNoDelay(_sock->rawFD(), false);
//播放模式下开启MSG_MORE会增加延时但是能提高发送性能 //播放模式下开启MSG_MORE会增加延时但是能提高发送性能

View File

@ -392,8 +392,8 @@ void RtspPusher::sendRecord() {
} }
void RtspPusher::setSocketFlags(){ void RtspPusher::setSocketFlags(){
GET_CONFIG(bool,ultraLowDelay,General::kUltraLowDelay); GET_CONFIG(int, mergeWriteMS, General::kMergeWriteMS);
if(!ultraLowDelay) { if(mergeWriteMS > 0) {
//提高发送性能 //提高发送性能
setSendFlags(SOCKET_DEFAULE_FLAGS | FLAG_MORE); setSendFlags(SOCKET_DEFAULE_FLAGS | FLAG_MORE);
SockUtil::setNoDelay(_sock->rawFD(), false); SockUtil::setNoDelay(_sock->rawFD(), false);

View File

@ -1236,8 +1236,8 @@ void RtspSession::sendSenderReport(bool overTcp,int iTrackIndex) {
} }
void RtspSession::setSocketFlags(){ void RtspSession::setSocketFlags(){
GET_CONFIG(bool,ultraLowDelay,General::kUltraLowDelay); GET_CONFIG(int, mergeWriteMS, General::kMergeWriteMS);
if(!ultraLowDelay) { if(mergeWriteMS > 0) {
//推流模式下关闭TCP_NODELAY会增加推流端的延时但是服务器性能将提高 //推流模式下关闭TCP_NODELAY会增加推流端的延时但是服务器性能将提高
SockUtil::setNoDelay(_sock->rawFD(), false); SockUtil::setNoDelay(_sock->rawFD(), false);
//播放模式下开启MSG_MORE会增加延时但是能提高发送性能 //播放模式下开启MSG_MORE会增加延时但是能提高发送性能