diff --git a/README.md b/README.md index 9d45f47d4..4258e5bd6 100755 --- a/README.md +++ b/README.md @@ -228,6 +228,7 @@ Please select according to languages: ### V2 changes +* v2.0, 2018-08-05, Refine HTTP-FLV latency, support realtime mode. 2.0.252 * v2.0, 2018-08-04, For [#1110][bug #1110], Support params in http callback. 2.0.251 * v2.0, 2018-08-02, For [#1031][bug #1031], SRS edge support douyu.com. 2.0.250 * v2.0, 2018-07-21, Merge [#1119][bug #1119], fix memory leak. 2.0.249 diff --git a/trunk/src/app/srs_app_http_stream.cpp b/trunk/src/app/srs_app_http_stream.cpp index 09a8a358b..00c4a9f3f 100755 --- a/trunk/src/app/srs_app_http_stream.cpp +++ b/trunk/src/app/srs_app_http_stream.cpp @@ -493,7 +493,12 @@ srs_error_t SrsLiveStream::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage if (srs_string_ends_with(entry->pattern, ".flv")) { w->header()->set_content_type("video/x-flv"); #ifdef SRS_PERF_FAST_FLV_ENCODER - enc = new SrsFastFlvStreamEncoder(); + bool realtime = _srs_config->get_realtime_enabled(req->vhost); + if (realtime) { + enc = new SrsFlvStreamEncoder(); + } else { + enc = new SrsFastFlvStreamEncoder(); + } #else enc = new SrsFlvStreamEncoder(); #endif @@ -552,6 +557,8 @@ srs_error_t SrsLiveStream::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage SrsHttpMessage* hr = dynamic_cast(r); SrsResponseOnlyHttpConn* hc = dynamic_cast(hr->connection()); + int mw_sleep = _srs_config->get_mw_sleep_ms(req->vhost); + SrsHttpRecvThread* trd = new SrsHttpRecvThread(hc); SrsAutoFree(SrsHttpRecvThread, trd); @@ -578,15 +585,15 @@ srs_error_t SrsLiveStream::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage if (count <= 0) { srs_info("http: sleep %dms for no msg", SRS_CONSTS_RTMP_PULSE_TMMS); // directly use sleep, donot use consumer wait. - srs_usleep(SRS_CONSTS_RTMP_PULSE_TMMS * 1000); + srs_usleep(mw_sleep); // ignore when nothing got. continue; } if (pprint->can_print()) { - srs_info("-> " SRS_CONSTS_LOG_HTTP_STREAM " http: got %d msgs, age=%d, min=%d, mw=%d", - count, pprint->age(), SRS_PERF_MW_MIN_MSGS, SRS_CONSTS_RTMP_PULSE_TMMS); + srs_trace("-> "SRS_CONSTS_LOG_HTTP_STREAM" http: got %d msgs, age=%d, min=%d, mw=%d", + count, pprint->age(), SRS_PERF_MW_MIN_MSGS, mw_sleep); } // sendout all messages.