mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
support reload the hls/forwarder/transcoder
This commit is contained in:
parent
aaba290c1d
commit
fb67f91167
5 changed files with 79 additions and 0 deletions
|
@ -559,6 +559,28 @@ int SrsConfig::reload()
|
||||||
}
|
}
|
||||||
srs_trace("vhost %s reload forward success.", vhost.c_str());
|
srs_trace("vhost %s reload forward success.", vhost.c_str());
|
||||||
}
|
}
|
||||||
|
// hls
|
||||||
|
if (!srs_directive_equals(new_vhost->get("hls"), old_vhost->get("hls"))) {
|
||||||
|
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
|
||||||
|
ISrsReloadHandler* subscribe = *it;
|
||||||
|
if ((ret = subscribe->on_reload_hls(vhost)) != ERROR_SUCCESS) {
|
||||||
|
srs_error("vhost %s notify subscribes hls failed. ret=%d", vhost.c_str(), ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
srs_trace("vhost %s reload hls success.", vhost.c_str());
|
||||||
|
}
|
||||||
|
// transcode
|
||||||
|
if (!srs_directive_equals(new_vhost->get("transcode"), old_vhost->get("transcode"))) {
|
||||||
|
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
|
||||||
|
ISrsReloadHandler* subscribe = *it;
|
||||||
|
if ((ret = subscribe->on_reload_transcode(vhost)) != ERROR_SUCCESS) {
|
||||||
|
srs_error("vhost %s notify subscribes transcode failed. ret=%d", vhost.c_str(), ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
srs_trace("vhost %s reload transcode success.", vhost.c_str());
|
||||||
|
}
|
||||||
// TODO: suppor reload hls/forward/ffmpeg/http
|
// TODO: suppor reload hls/forward/ffmpeg/http
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,3 +60,13 @@ int ISrsReloadHandler::on_reload_forward(string /*vhost*/)
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ISrsReloadHandler::on_reload_hls(string /*vhost*/)
|
||||||
|
{
|
||||||
|
return ERROR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ISrsReloadHandler::on_reload_transcode(string /*vhost*/)
|
||||||
|
{
|
||||||
|
return ERROR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,8 @@ public:
|
||||||
virtual int on_reload_vhost_removed(std::string vhost);
|
virtual int on_reload_vhost_removed(std::string vhost);
|
||||||
virtual int on_reload_gop_cache(std::string vhost);
|
virtual int on_reload_gop_cache(std::string vhost);
|
||||||
virtual int on_reload_forward(std::string vhost);
|
virtual int on_reload_forward(std::string vhost);
|
||||||
|
virtual int on_reload_hls(std::string vhost);
|
||||||
|
virtual int on_reload_transcode(std::string vhost);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -455,6 +455,47 @@ int SrsSource::on_reload_forward(string vhost)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SrsSource::on_reload_hls(string vhost)
|
||||||
|
{
|
||||||
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
|
if (req->vhost != vhost) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: HLS should continue previous sequence and stream.
|
||||||
|
#ifdef SRS_HLS
|
||||||
|
hls->on_unpublish();
|
||||||
|
if ((ret = hls->on_publish(req)) != ERROR_SUCCESS) {
|
||||||
|
srs_error("hls publish failed. ret=%d", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
srs_trace("vhost %s hls reload success", vhost.c_str());
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int SrsSource::on_reload_transcode(string vhost)
|
||||||
|
{
|
||||||
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
|
if (req->vhost != vhost) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef SRS_FFMPEG
|
||||||
|
encoder->on_unpublish();
|
||||||
|
if ((ret = encoder->on_publish(req)) != ERROR_SUCCESS) {
|
||||||
|
srs_error("start encoder failed. ret=%d", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
srs_trace("vhost %s transcode reload success", vhost.c_str());
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
bool SrsSource::can_publish()
|
bool SrsSource::can_publish()
|
||||||
{
|
{
|
||||||
return _can_publish;
|
return _can_publish;
|
||||||
|
@ -697,12 +738,14 @@ int SrsSource::on_publish(SrsRequest* _req)
|
||||||
|
|
||||||
#ifdef SRS_FFMPEG
|
#ifdef SRS_FFMPEG
|
||||||
if ((ret = encoder->on_publish(req)) != ERROR_SUCCESS) {
|
if ((ret = encoder->on_publish(req)) != ERROR_SUCCESS) {
|
||||||
|
srs_error("start encoder failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SRS_HLS
|
#ifdef SRS_HLS
|
||||||
if ((ret = hls->on_publish(req)) != ERROR_SUCCESS) {
|
if ((ret = hls->on_publish(req)) != ERROR_SUCCESS) {
|
||||||
|
srs_error("start hls failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -219,6 +219,8 @@ public:
|
||||||
public:
|
public:
|
||||||
virtual int on_reload_gop_cache(std::string vhost);
|
virtual int on_reload_gop_cache(std::string vhost);
|
||||||
virtual int on_reload_forward(std::string vhost);
|
virtual int on_reload_forward(std::string vhost);
|
||||||
|
virtual int on_reload_hls(std::string vhost);
|
||||||
|
virtual int on_reload_transcode(std::string vhost);
|
||||||
public:
|
public:
|
||||||
virtual bool can_publish();
|
virtual bool can_publish();
|
||||||
virtual int on_meta_data(SrsCommonMessage* msg, SrsOnMetaDataPacket* metadata);
|
virtual int on_meta_data(SrsCommonMessage* msg, SrsOnMetaDataPacket* metadata);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue