diff --git a/trunk/conf/console.conf b/trunk/conf/console.conf index e53d87c26..681434632 100644 --- a/trunk/conf/console.conf +++ b/trunk/conf/console.conf @@ -9,7 +9,7 @@ http_api { enabled on; listen 1985; } -http_stream { +http_server { enabled on; listen 8080; } diff --git a/trunk/conf/demo.conf b/trunk/conf/demo.conf index 191ff87f0..06d7ee4ad 100644 --- a/trunk/conf/demo.conf +++ b/trunk/conf/demo.conf @@ -17,7 +17,7 @@ http_api { listen 1985; } -http_stream { +http_server { enabled on; listen 8080; dir ./objs/nginx/html; diff --git a/trunk/conf/full.conf b/trunk/conf/full.conf index 925bfbe74..ad4307eb2 100644 --- a/trunk/conf/full.conf +++ b/trunk/conf/full.conf @@ -120,7 +120,7 @@ http_api { # which will show srs version and welcome to srs. # @remark, the http embeded stream need to config the vhost, for instance, the __defaultVhost__ # need to open the feature http of vhost. -http_stream { +http_server { # whether http streaming service is enabled. # default: off enabled on; @@ -355,7 +355,7 @@ vhost http.static.srs.com { # the variables: # [vhost] current vhost for http server. # @remark the [vhost] is optional, used to mount at specified vhost. - # @remark the http of __defaultVhost__ will override the http_stream section. + # @remark the http of __defaultVhost__ will override the http_server section. # for example: # mount to [vhost]/ # access by http://ossrs.net:8080/xxx.html @@ -367,7 +367,7 @@ vhost http.static.srs.com { # mount to /hls # access by http://ossrs.net:8080/hls/xxx.html # or by http://192.168.1.173:8080/hls/xxx.html - # @remark the port of http is specified by http_stream section. + # @remark the port of http is specified by http_server section. # default: [vhost]/ mount [vhost]/hls; # main dir of vhost, @@ -378,9 +378,9 @@ vhost http.static.srs.com { } # vhost for http flv/aac/mp3 live stream for each vhost. -vhost http.flv.srs.com { +vhost http.remux.srs.com { # http flv/mp3/aac stream vhost specified config - http_flv { + http_remux { # whether enable the http flv live streaming service for vhost. # default: off enabled on; @@ -410,7 +410,7 @@ vhost http.flv.srs.com { # access by http://ossrs.net:8080/live/livestream.mp3 # mount to [vhost]/[app]/[stream].aac # access by http://ossrs.net:8080/live/livestream.aac - # @remark the port of http is specified by http_stream section. + # @remark the port of http is specified by http_server section. # default: [vhost]/[app]/[stream].flv mount [vhost]/[app]/[stream].flv; } diff --git a/trunk/conf/http.aac.live.conf b/trunk/conf/http.aac.live.conf index 959619531..8e56208f5 100644 --- a/trunk/conf/http.aac.live.conf +++ b/trunk/conf/http.aac.live.conf @@ -4,13 +4,13 @@ listen 1935; max_connections 1000; -http_stream { +http_server { enabled on; listen 8080; dir ./objs/nginx/html; } vhost __defaultVhost__ { - http_flv { + http_remux { enabled on; fast_cache 30; mount [vhost]/[app]/[stream].aac; diff --git a/trunk/conf/http.flv.live.conf b/trunk/conf/http.flv.live.conf index ac3bff1bc..1fd9585ff 100644 --- a/trunk/conf/http.flv.live.conf +++ b/trunk/conf/http.flv.live.conf @@ -4,13 +4,13 @@ listen 1935; max_connections 1000; -http_stream { +http_server { enabled on; listen 8080; dir ./objs/nginx/html; } vhost __defaultVhost__ { - http_flv { + http_remux { enabled on; mount [vhost]/[app]/[stream].flv; } diff --git a/trunk/conf/http.hls.conf b/trunk/conf/http.hls.conf index 8c2c4cdc9..74b2a219e 100644 --- a/trunk/conf/http.hls.conf +++ b/trunk/conf/http.hls.conf @@ -4,7 +4,7 @@ listen 1935; max_connections 1000; -http_stream { +http_server { enabled on; listen 8080; dir ./objs/nginx/html; diff --git a/trunk/conf/http.mp3.live.conf b/trunk/conf/http.mp3.live.conf index 4de96d17b..23b821990 100644 --- a/trunk/conf/http.mp3.live.conf +++ b/trunk/conf/http.mp3.live.conf @@ -4,13 +4,13 @@ listen 1935; max_connections 1000; -http_stream { +http_server { enabled on; listen 8080; dir ./objs/nginx/html; } vhost __defaultVhost__ { - http_flv { + http_remux { enabled on; fast_cache 30; mount [vhost]/[app]/[stream].mp3; diff --git a/trunk/conf/http.server.conf b/trunk/conf/http.server.conf index 5e63e373a..69c94f39c 100644 --- a/trunk/conf/http.server.conf +++ b/trunk/conf/http.server.conf @@ -3,7 +3,7 @@ listen 1935; max_connections 1000; -http_stream { +http_server { enabled on; listen 8080; dir ./objs/nginx/html; diff --git a/trunk/conf/srs.conf b/trunk/conf/srs.conf index d5d836bdd..da062849a 100644 --- a/trunk/conf/srs.conf +++ b/trunk/conf/srs.conf @@ -9,7 +9,7 @@ http_api { enabled on; listen 1985; } -http_stream { +http_server { enabled on; listen 8080; dir ./objs/nginx/html; diff --git a/trunk/src/app/srs_app_config.cpp b/trunk/src/app/srs_app_config.cpp index 9b4dcb4b9..45d4a7cc1 100644 --- a/trunk/src/app/srs_app_config.cpp +++ b/trunk/src/app/srs_app_config.cpp @@ -606,7 +606,16 @@ int SrsConfig::reload_http_stream(SrsConfDirective* old_root) // ENABLED => ENABLED (modified) SrsConfDirective* new_http_stream = root->get("http_stream"); + // http_stream rename to http_server in SRS2. + if (!new_http_stream) { + new_http_stream = root->get("http_server"); + } + SrsConfDirective* old_http_stream = old_root->get("http_stream"); + // http_stream rename to http_server in SRS2. + if (!old_http_stream) { + old_http_stream = root->get("http_server"); + } // DISABLED => ENABLED if (!get_http_stream_enabled(old_http_stream) && get_http_stream_enabled(new_http_stream)) { @@ -876,16 +885,28 @@ int SrsConfig::reload_vhost(SrsConfDirective* old_root) } srs_trace("vhost %s reload http success.", vhost.c_str()); } - // http_flv, only one per vhost. - if (!srs_directive_equals(new_vhost->get("http_flv"), old_vhost->get("http_flv"))) { + // http_static, only one per vhost. + // @remark, http_static introduced as alias of http. + if (!srs_directive_equals(new_vhost->get("http_static"), old_vhost->get("http_static"))) { for (it = subscribes.begin(); it != subscribes.end(); ++it) { ISrsReloadHandler* subscribe = *it; - if ((ret = subscribe->on_reload_vhost_http_flv_updated()) != ERROR_SUCCESS) { - srs_error("vhost %s notify subscribes http_flv failed. ret=%d", vhost.c_str(), ret); + if ((ret = subscribe->on_reload_vhost_http_updated()) != ERROR_SUCCESS) { + srs_error("vhost %s notify subscribes http_static failed. ret=%d", vhost.c_str(), ret); return ret; } } - srs_trace("vhost %s reload http_flv success.", vhost.c_str()); + srs_trace("vhost %s reload http_static success.", vhost.c_str()); + } + // http_remux, only one per vhost. + if (!srs_directive_equals(new_vhost->get("http_remux"), old_vhost->get("http_remux"))) { + for (it = subscribes.begin(); it != subscribes.end(); ++it) { + ISrsReloadHandler* subscribe = *it; + if ((ret = subscribe->on_reload_vhost_http_remux_updated()) != ERROR_SUCCESS) { + srs_error("vhost %s notify subscribes http_remux failed. ret=%d", vhost.c_str(), ret); + return ret; + } + } + srs_trace("vhost %s reload http_remux success.", vhost.c_str()); } // transcode, many per vhost. if ((ret = reload_transcode(new_vhost, old_vhost)) != ERROR_SUCCESS) { @@ -1293,8 +1314,8 @@ int SrsConfig::check_config() if (n != "listen" && n != "pid" && n != "chunk_size" && n != "ff_log_dir" && n != "srs_log_tank" && n != "srs_log_level" && n != "srs_log_file" && n != "max_connections" && n != "daemon" && n != "heartbeat" - && n != "http_api" && n != "http_stream" && n != "stats" && n != "vhost" - && n != "pithy_print") + && n != "http_api" && n != "stats" && n != "vhost" && n != "pithy_print" + && n != "http_stream" && n != "http_server") { ret = ERROR_SYSTEM_CONFIG_INVALID; srs_error("unsupported directive %s, ret=%d", n.c_str(), ret); @@ -1367,7 +1388,7 @@ int SrsConfig::check_config() string n = conf->name; if (n != "enabled" && n != "chunk_size" && n != "mode" && n != "origin" && n != "token_traverse" - && n != "dvr" && n != "ingest" && n != "http" && n != "hls" && n != "http_hooks" + && n != "dvr" && n != "ingest" && n != "hls" && n != "http_hooks" && n != "gop_cache" && n != "queue_length" && n != "refer" && n != "refer_publish" && n != "refer_play" && n != "forward" && n != "transcode" && n != "bandcheck" @@ -1375,7 +1396,8 @@ int SrsConfig::check_config() && n != "atc" && n != "atc_auto" && n != "debug_srs_upnode" && n != "mr" && n != "mw_latency" && n != "min_latency" - && n != "security" && n != "http_flv" + && n != "security" && n != "http_remux" + && n != "http" && n != "http_static" ) { ret = ERROR_SYSTEM_CONFIG_INVALID; srs_error("unsupported vhost directive %s, ret=%d", n.c_str(), ret); @@ -1414,7 +1436,7 @@ int SrsConfig::check_config() return ret; } } - } else if (n == "http") { + } else if (n == "http" || n == "http_static") { for (int j = 0; j < (int)conf->directives.size(); j++) { string m = conf->at(j)->name.c_str(); if (m != "enabled" && m != "mount" && m != "dir") { @@ -1423,12 +1445,12 @@ int SrsConfig::check_config() return ret; } } - } else if (n == "http_flv") { + } else if (n == "http_remux") { for (int j = 0; j < (int)conf->directives.size(); j++) { string m = conf->at(j)->name.c_str(); if (m != "enabled" && m != "mount" && m != "fast_cache") { ret = ERROR_SYSTEM_CONFIG_INVALID; - srs_error("unsupported vhost http_flv directive %s, ret=%d", m.c_str(), ret); + srs_error("unsupported vhost http_remux directive %s, ret=%d", m.c_str(), ret); return ret; } } @@ -3329,7 +3351,13 @@ bool SrsConfig::get_http_stream_enabled() SrsConfDirective* SrsConfig::get_http_stream() { - return root->get("http_stream"); + SrsConfDirective* conf = root->get("http_stream"); + // http_stream renamed to http_server in SRS2. + if (!conf) { + conf = root->get("http_server"); + } + + return conf; } bool SrsConfig::get_http_stream_enabled(SrsConfDirective* conf) @@ -3383,14 +3411,17 @@ string SrsConfig::get_http_stream_dir() bool SrsConfig::get_vhost_http_enabled(string vhost) { - SrsConfDirective* conf = get_vhost(vhost); - if (!conf) { + SrsConfDirective* vconf = get_vhost(vhost); + if (!vconf) { return false; } - conf = conf->get("http"); + SrsConfDirective* conf = vconf->get("http"); if (!conf) { - return false; + conf = vconf->get("http_static"); + if (!conf) { + return false; + } } conf = conf->get("enabled"); @@ -3407,14 +3438,17 @@ bool SrsConfig::get_vhost_http_enabled(string vhost) string SrsConfig::get_vhost_http_mount(string vhost) { - SrsConfDirective* conf = get_vhost(vhost); - if (!conf) { + SrsConfDirective* vconf = get_vhost(vhost); + if (!vconf) { return SRS_CONF_DEFAULT_HTTP_MOUNT; } - conf = conf->get("http"); + SrsConfDirective* conf = vconf->get("http"); if (!conf) { - return SRS_CONF_DEFAULT_HTTP_MOUNT; + conf = vconf->get("http_static"); + if (!conf) { + return SRS_CONF_DEFAULT_HTTP_MOUNT; + } } conf = conf->get("mount"); @@ -3427,14 +3461,17 @@ string SrsConfig::get_vhost_http_mount(string vhost) string SrsConfig::get_vhost_http_dir(string vhost) { - SrsConfDirective* conf = get_vhost(vhost); - if (!conf) { + SrsConfDirective* vconf = get_vhost(vhost); + if (!vconf) { return SRS_CONF_DEFAULT_HTTP_DIR; } - conf = conf->get("http"); + SrsConfDirective* conf = vconf->get("http"); if (!conf) { - return SRS_CONF_DEFAULT_HTTP_DIR; + conf = vconf->get("http_static"); + if (!conf) { + return SRS_CONF_DEFAULT_HTTP_DIR; + } } conf = conf->get("dir"); @@ -3445,14 +3482,14 @@ string SrsConfig::get_vhost_http_dir(string vhost) return conf->arg0(); } -bool SrsConfig::get_vhost_http_flv_enabled(string vhost) +bool SrsConfig::get_vhost_http_remux_enabled(string vhost) { SrsConfDirective* conf = get_vhost(vhost); if (!conf) { return false; } - conf = conf->get("http_flv"); + conf = conf->get("http_remux"); if (!conf) { return false; } @@ -3469,14 +3506,14 @@ bool SrsConfig::get_vhost_http_flv_enabled(string vhost) return false; } -double SrsConfig::get_vhost_http_flv_fast_cache(string vhost) +double SrsConfig::get_vhost_http_remux_fast_cache(string vhost) { SrsConfDirective* conf = get_vhost(vhost); if (!conf) { return SRS_CONF_DEFAULT_HTTP_AUDIO_FAST_CACHE; } - conf = conf->get("http_flv"); + conf = conf->get("http_remux"); if (!conf) { return SRS_CONF_DEFAULT_HTTP_AUDIO_FAST_CACHE; } @@ -3493,21 +3530,21 @@ double SrsConfig::get_vhost_http_flv_fast_cache(string vhost) return ::atof(conf->arg0().c_str()); } -string SrsConfig::get_vhost_http_flv_mount(string vhost) +string SrsConfig::get_vhost_http_remux_mount(string vhost) { SrsConfDirective* conf = get_vhost(vhost); if (!conf) { - return SRS_CONF_DEFAULT_HTTP_FLV_MOUNT; + return SRS_CONF_DEFAULT_HTTP_REMUX_MOUNT; } - conf = conf->get("http_flv"); + conf = conf->get("http_remux"); if (!conf) { - return SRS_CONF_DEFAULT_HTTP_FLV_MOUNT; + return SRS_CONF_DEFAULT_HTTP_REMUX_MOUNT; } conf = conf->get("mount"); if (!conf || conf->arg0().empty()) { - return SRS_CONF_DEFAULT_HTTP_FLV_MOUNT; + return SRS_CONF_DEFAULT_HTTP_REMUX_MOUNT; } return conf->arg0(); diff --git a/trunk/src/app/srs_app_config.hpp b/trunk/src/app/srs_app_config.hpp index 9e0956f1c..f89f66dba 100644 --- a/trunk/src/app/srs_app_config.hpp +++ b/trunk/src/app/srs_app_config.hpp @@ -66,7 +66,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define SRS_CONF_DEFAULT_BANDWIDTH_LIMIT_KBPS 1000 #define SRS_CONF_DEFAULT_HTTP_MOUNT "[vhost]/" -#define SRS_CONF_DEFAULT_HTTP_FLV_MOUNT "[vhost]/[app]/[stream].flv" +#define SRS_CONF_DEFAULT_HTTP_REMUX_MOUNT "[vhost]/[app]/[stream].flv" #define SRS_CONF_DEFAULT_HTTP_DIR SRS_CONF_DEFAULT_HLS_PATH #define SRS_CONF_DEFAULT_HTTP_AUDIO_FAST_CACHE 30 @@ -970,16 +970,16 @@ public: /** * get whether vhost enabled http flv live stream */ - virtual bool get_vhost_http_flv_enabled(std::string vhost); + virtual bool get_vhost_http_remux_enabled(std::string vhost); /** * get the fast cache duration for http audio live stream. */ - virtual double get_vhost_http_flv_fast_cache(std::string vhost); + virtual double get_vhost_http_remux_fast_cache(std::string vhost); /** * get the http flv live stream mount point for vhost. * used to generate the flv stream mount path. */ - virtual std::string get_vhost_http_flv_mount(std::string vhost); + virtual std::string get_vhost_http_remux_mount(std::string vhost); // http heartbeart section private: /** diff --git a/trunk/src/app/srs_app_http_conn.cpp b/trunk/src/app/srs_app_http_conn.cpp index ae5c19a77..c95ace46f 100644 --- a/trunk/src/app/srs_app_http_conn.cpp +++ b/trunk/src/app/srs_app_http_conn.cpp @@ -68,7 +68,7 @@ int SrsVodStream::serve_flv_stream(ISrsGoHttpResponseWriter* w, SrsHttpMessage* } if (offset > fs.filesize()) { - ret = ERROR_HTTP_FLV_OFFSET_OVERFLOW; + ret = ERROR_HTTP_REMUX_OFFSET_OVERFLOW; srs_warn("http flv streaming %s overflow. size=%"PRId64", offset=%d, ret=%d", fullpath.c_str(), fs.filesize(), offset, ret); return ret; @@ -100,7 +100,7 @@ int SrsVodStream::serve_flv_stream(ISrsGoHttpResponseWriter* w, SrsHttpMessage* return ret; } if (sh_size <= 0) { - ret = ERROR_HTTP_FLV_SEQUENCE_HEADER; + ret = ERROR_HTTP_REMUX_SEQUENCE_HEADER; srs_warn("http flv streaming no sequence header. size=%d, ret=%d", sh_size, ret); return ret; } @@ -171,7 +171,7 @@ int SrsStreamCache::dump_cache(SrsConsumer* consumer) } srs_trace("http: dump cache %d msgs, duration=%dms, cache=%.2fs", - queue->size(), queue->duration(), _srs_config->get_vhost_http_flv_fast_cache(req->vhost)); + queue->size(), queue->duration(), _srs_config->get_vhost_http_remux_fast_cache(req->vhost)); return ret; } @@ -191,7 +191,7 @@ int SrsStreamCache::cycle() // TODO: FIMXE: add pithy print. // TODO: FIXME: support reload. - queue->set_queue_size(_srs_config->get_vhost_http_flv_fast_cache(req->vhost)); + queue->set_queue_size(_srs_config->get_vhost_http_remux_fast_cache(req->vhost)); while (true) { // get messages from consumer. @@ -656,7 +656,7 @@ int SrsHttpServer::on_reload_vhost_http_updated() return ret; } -int SrsHttpServer::on_reload_vhost_http_flv_updated() +int SrsHttpServer::on_reload_vhost_http_remux_updated() { int ret = ERROR_SUCCESS; // TODO: FIXME: implements it. @@ -737,13 +737,13 @@ int SrsHttpServer::mount_flv_streaming() } std::string vhost = conf->arg0(); - if (!_srs_config->get_vhost_http_flv_enabled(vhost)) { + if (!_srs_config->get_vhost_http_remux_enabled(vhost)) { continue; } SrsLiveEntry* entry = new SrsLiveEntry(); entry->vhost = vhost; - entry->mount = _srs_config->get_vhost_http_flv_mount(vhost); + entry->mount = _srs_config->get_vhost_http_remux_mount(vhost); flvs[vhost] = entry; srs_trace("http flv live stream, vhost=%s, mount=%s", vhost.c_str(), entry->mount.c_str()); diff --git a/trunk/src/app/srs_app_http_conn.hpp b/trunk/src/app/srs_app_http_conn.hpp index ac0a4e3b3..4677faf23 100644 --- a/trunk/src/app/srs_app_http_conn.hpp +++ b/trunk/src/app/srs_app_http_conn.hpp @@ -259,7 +259,7 @@ public: // interface ISrsThreadHandler. public: virtual int on_reload_vhost_http_updated(); - virtual int on_reload_vhost_http_flv_updated(); + virtual int on_reload_vhost_http_remux_updated(); private: virtual int mount_static_file(); virtual int mount_flv_streaming(); diff --git a/trunk/src/app/srs_app_reload.cpp b/trunk/src/app/srs_app_reload.cpp index cf9db06a9..255aecca5 100644 --- a/trunk/src/app/srs_app_reload.cpp +++ b/trunk/src/app/srs_app_reload.cpp @@ -95,7 +95,7 @@ int ISrsReloadHandler::on_reload_vhost_http_updated() return ERROR_SUCCESS; } -int ISrsReloadHandler::on_reload_vhost_http_flv_updated() +int ISrsReloadHandler::on_reload_vhost_http_remux_updated() { return ERROR_SUCCESS; } diff --git a/trunk/src/app/srs_app_reload.hpp b/trunk/src/app/srs_app_reload.hpp index 7634928e6..09313a97c 100644 --- a/trunk/src/app/srs_app_reload.hpp +++ b/trunk/src/app/srs_app_reload.hpp @@ -56,7 +56,7 @@ public: virtual int on_reload_http_stream_disabled(); virtual int on_reload_http_stream_updated(); virtual int on_reload_vhost_http_updated(); - virtual int on_reload_vhost_http_flv_updated(); + virtual int on_reload_vhost_http_remux_updated(); virtual int on_reload_vhost_added(std::string vhost); virtual int on_reload_vhost_removed(std::string vhost); virtual int on_reload_vhost_atc(std::string vhost); diff --git a/trunk/src/kernel/srs_kernel_error.hpp b/trunk/src/kernel/srs_kernel_error.hpp index 0eabfa531..43e286697 100644 --- a/trunk/src/kernel/srs_kernel_error.hpp +++ b/trunk/src/kernel/srs_kernel_error.hpp @@ -166,8 +166,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define ERROR_HTTP_HANDLER_MATCH_URL 3010 #define ERROR_HTTP_HANDLER_INVALID 3011 #define ERROR_HTTP_API_LOGS 3012 -#define ERROR_HTTP_FLV_SEQUENCE_HEADER 3013 -#define ERROR_HTTP_FLV_OFFSET_OVERFLOW 3014 +#define ERROR_HTTP_REMUX_SEQUENCE_HEADER 3013 +#define ERROR_HTTP_REMUX_OFFSET_OVERFLOW 3014 #define ERROR_ENCODER_VCODEC 3015 #define ERROR_ENCODER_OUTPUT 3016 #define ERROR_ENCODER_ACHANNELS 3017