int StHlsTask::DownloadTS(StHttpClient& client, M3u8TS& ts){ int ret = ERROR_SUCCESS; HttpUrl url; if((ret = url.Initialize(ts.ts_url)) != ERROR_SUCCESS){ Error("initialize ts url failed. ret=%d", ret); return ret; } Info("[TS] url=%s, duration=%.2f, delay=%.2f", url.GetUrl(), ts.duration, delay_seconds); statistic->OnSubTaskStart(GetId(), ts.ts_url); if((ret = client.DownloadString(&url, NULL)) != ERROR_SUCCESS){ statistic->OnSubTaskError(GetId(), (int)ts.duration); Error("http client download ts file %s failed. ret=%d", url.GetUrl(), ret); return ret; } int sleep_ms = StUtility::BuildRandomMTime((delay_seconds >= 0)? delay_seconds:ts.duration); Trace("[TS] url=%s download, duration=%.2f, delay=%.2f, size=%"PRId64", sleep %dms", url.GetUrl(), ts.duration, delay_seconds, client.GetResponseHeader()->content_length, sleep_ms); st_usleep(sleep_ms * 1000); statistic->OnSubTaskEnd(GetId(), (int)ts.duration); return ret; }
HttpUrl* HttpUrl::Copy(){ HttpUrl* copy = new HttpUrl(); copy->Initialize(url); return copy; }