正在显示
3 个修改的文件
包含
40 行增加
和
12 行删除
| @@ -562,6 +562,7 @@ int SrsConfig::reload() | @@ -562,6 +562,7 @@ int SrsConfig::reload() | ||
| 562 | } | 562 | } |
| 563 | } | 563 | } |
| 564 | srs_trace("reload remove vhost %s success.", vhost.c_str()); | 564 | srs_trace("reload remove vhost %s success.", vhost.c_str()); |
| 565 | + continue; | ||
| 565 | } | 566 | } |
| 566 | 567 | ||
| 567 | // merge config: vhost modified. | 568 | // merge config: vhost modified. |
| @@ -273,13 +273,6 @@ int SrsIngester::initialize_ffmpeg(SrsFFMPEG* ffmpeg, SrsConfDirective* vhost, S | @@ -273,13 +273,6 @@ int SrsIngester::initialize_ffmpeg(SrsFFMPEG* ffmpeg, SrsConfDirective* vhost, S | ||
| 273 | log_file += "-"; | 273 | log_file += "-"; |
| 274 | log_file += stream; | 274 | log_file += stream; |
| 275 | log_file += ".log"; | 275 | log_file += ".log"; |
| 276 | - | ||
| 277 | - // stream name: vhost/app/stream for print | ||
| 278 | - input_stream_name = vhost->arg0(); | ||
| 279 | - input_stream_name += "/"; | ||
| 280 | - input_stream_name += app; | ||
| 281 | - input_stream_name += "/"; | ||
| 282 | - input_stream_name += stream; | ||
| 283 | 276 | ||
| 284 | // input | 277 | // input |
| 285 | std::string input_type = _srs_config->get_ingest_input_type(ingest); | 278 | std::string input_type = _srs_config->get_ingest_input_type(ingest); |
| @@ -346,12 +339,17 @@ int SrsIngester::initialize_ffmpeg(SrsFFMPEG* ffmpeg, SrsConfDirective* vhost, S | @@ -346,12 +339,17 @@ int SrsIngester::initialize_ffmpeg(SrsFFMPEG* ffmpeg, SrsConfDirective* vhost, S | ||
| 346 | 339 | ||
| 347 | void SrsIngester::ingester() | 340 | void SrsIngester::ingester() |
| 348 | { | 341 | { |
| 342 | + if ((int)ingesters.size() <= 0) { | ||
| 343 | + return; | ||
| 344 | + } | ||
| 345 | + | ||
| 349 | // reportable | 346 | // reportable |
| 350 | - if (pithy_print->can_print()) { | ||
| 351 | - // TODO: FIXME: show more info. | ||
| 352 | - srs_trace("-> time=%"PRId64", ingesters=%d, input=%s", | ||
| 353 | - pithy_print->get_age(), (int)ingesters.size(), input_stream_name.c_str()); | 347 | + if (!pithy_print->can_print()) { |
| 348 | + return; | ||
| 354 | } | 349 | } |
| 350 | + | ||
| 351 | + // TODO: FIXME: show more info. | ||
| 352 | + srs_trace("-> time=%"PRId64", ingesters=%d", pithy_print->get_age(), (int)ingesters.size()); | ||
| 355 | } | 353 | } |
| 356 | 354 | ||
| 357 | int SrsIngester::on_reload_vhost_added(string vhost) | 355 | int SrsIngester::on_reload_vhost_added(string vhost) |
| @@ -366,4 +364,33 @@ int SrsIngester::on_reload_vhost_added(string vhost) | @@ -366,4 +364,33 @@ int SrsIngester::on_reload_vhost_added(string vhost) | ||
| 366 | return ret; | 364 | return ret; |
| 367 | } | 365 | } |
| 368 | 366 | ||
| 367 | +int SrsIngester::on_reload_vhost_removed(string vhost) | ||
| 368 | +{ | ||
| 369 | + int ret = ERROR_SUCCESS; | ||
| 370 | + | ||
| 371 | + std::vector<SrsIngesterFFMPEG*>::iterator it; | ||
| 372 | + | ||
| 373 | + for (it = ingesters.begin(); it != ingesters.end();) { | ||
| 374 | + SrsIngesterFFMPEG* ingester = *it; | ||
| 375 | + | ||
| 376 | + if (ingester->vhost != vhost) { | ||
| 377 | + ++it; | ||
| 378 | + continue; | ||
| 379 | + } | ||
| 380 | + | ||
| 381 | + // stop the ffmpeg and free it. | ||
| 382 | + ingester->ffmpeg->stop(); | ||
| 383 | + | ||
| 384 | + srs_trace("reload stop ingester, " | ||
| 385 | + "vhost=%s, id=%s", vhost.c_str(), ingester->id.c_str()); | ||
| 386 | + | ||
| 387 | + srs_freep(ingester); | ||
| 388 | + | ||
| 389 | + // remove the item from ingesters. | ||
| 390 | + it = ingesters.erase(it); | ||
| 391 | + } | ||
| 392 | + | ||
| 393 | + return ret; | ||
| 394 | +} | ||
| 395 | + | ||
| 369 | #endif | 396 | #endif |
| @@ -61,7 +61,6 @@ struct SrsIngesterFFMPEG | @@ -61,7 +61,6 @@ struct SrsIngesterFFMPEG | ||
| 61 | class SrsIngester : public ISrsThreadHandler, public ISrsReloadHandler | 61 | class SrsIngester : public ISrsThreadHandler, public ISrsReloadHandler |
| 62 | { | 62 | { |
| 63 | private: | 63 | private: |
| 64 | - std::string input_stream_name; | ||
| 65 | std::vector<SrsIngesterFFMPEG*> ingesters; | 64 | std::vector<SrsIngesterFFMPEG*> ingesters; |
| 66 | private: | 65 | private: |
| 67 | SrsThread* pthread; | 66 | SrsThread* pthread; |
| @@ -85,6 +84,7 @@ private: | @@ -85,6 +84,7 @@ private: | ||
| 85 | virtual void ingester(); | 84 | virtual void ingester(); |
| 86 | // interface ISrsReloadHandler. | 85 | // interface ISrsReloadHandler. |
| 87 | public: | 86 | public: |
| 87 | + virtual int on_reload_vhost_removed(std::string vhost); | ||
| 88 | virtual int on_reload_vhost_added(std::string vhost); | 88 | virtual int on_reload_vhost_added(std::string vhost); |
| 89 | }; | 89 | }; |
| 90 | 90 |
-
请 注册 或 登录 后发表评论