正在显示
4 个修改的文件
包含
107 行增加
和
79 行删除
| @@ -1835,7 +1835,7 @@ int SrsConfig::get_bw_check_limit_kbps(string vhost) | @@ -1835,7 +1835,7 @@ int SrsConfig::get_bw_check_limit_kbps(string vhost) | ||
| 1835 | return ::atoi(conf->arg0().c_str()); | 1835 | return ::atoi(conf->arg0().c_str()); |
| 1836 | } | 1836 | } |
| 1837 | 1837 | ||
| 1838 | -bool SrsConfig::get_vhost_is_edge(std::string vhost) | 1838 | +bool SrsConfig::get_vhost_is_edge(string vhost) |
| 1839 | { | 1839 | { |
| 1840 | SrsConfDirective* conf = get_vhost(vhost); | 1840 | SrsConfDirective* conf = get_vhost(vhost); |
| 1841 | return get_vhost_is_edge(conf); | 1841 | return get_vhost_is_edge(conf); |
| @@ -1868,7 +1868,7 @@ SrsConfDirective* SrsConfig::get_vhost_edge_origin(string vhost) | @@ -1868,7 +1868,7 @@ SrsConfDirective* SrsConfig::get_vhost_edge_origin(string vhost) | ||
| 1868 | return conf->get("origin"); | 1868 | return conf->get("origin"); |
| 1869 | } | 1869 | } |
| 1870 | 1870 | ||
| 1871 | -bool SrsConfig::get_vhost_edge_token_traverse(std::string vhost) | 1871 | +bool SrsConfig::get_vhost_edge_token_traverse(string vhost) |
| 1872 | { | 1872 | { |
| 1873 | SrsConfDirective* conf = get_vhost(vhost); | 1873 | SrsConfDirective* conf = get_vhost(vhost); |
| 1874 | 1874 | ||
| @@ -1965,6 +1965,32 @@ bool SrsConfig::get_engine_enabled(SrsConfDirective* engine) | @@ -1965,6 +1965,32 @@ bool SrsConfig::get_engine_enabled(SrsConfDirective* engine) | ||
| 1965 | return true; | 1965 | return true; |
| 1966 | } | 1966 | } |
| 1967 | 1967 | ||
| 1968 | +vector<string> SrsConfig::get_engine_vfilter(SrsConfDirective* engine) | ||
| 1969 | +{ | ||
| 1970 | + vector<string> vfilter; | ||
| 1971 | + | ||
| 1972 | + if (!engine) { | ||
| 1973 | + return vfilter; | ||
| 1974 | + } | ||
| 1975 | + | ||
| 1976 | + SrsConfDirective* conf = engine->get("vfilter"); | ||
| 1977 | + if (!conf) { | ||
| 1978 | + return vfilter; | ||
| 1979 | + } | ||
| 1980 | + | ||
| 1981 | + for (int i = 0; i < (int)conf->directives.size(); i++) { | ||
| 1982 | + SrsConfDirective* p = conf->directives[i]; | ||
| 1983 | + if (!p) { | ||
| 1984 | + continue; | ||
| 1985 | + } | ||
| 1986 | + | ||
| 1987 | + vfilter.push_back("-" + p->name); | ||
| 1988 | + vfilter.push_back(p->arg0()); | ||
| 1989 | + } | ||
| 1990 | + | ||
| 1991 | + return vfilter; | ||
| 1992 | +} | ||
| 1993 | + | ||
| 1968 | string SrsConfig::get_engine_vcodec(SrsConfDirective* engine) | 1994 | string SrsConfig::get_engine_vcodec(SrsConfDirective* engine) |
| 1969 | { | 1995 | { |
| 1970 | if (!engine) { | 1996 | if (!engine) { |
| @@ -2077,15 +2103,17 @@ string SrsConfig::get_engine_vpreset(SrsConfDirective* engine) | @@ -2077,15 +2103,17 @@ string SrsConfig::get_engine_vpreset(SrsConfDirective* engine) | ||
| 2077 | return conf->arg0(); | 2103 | return conf->arg0(); |
| 2078 | } | 2104 | } |
| 2079 | 2105 | ||
| 2080 | -void SrsConfig::get_engine_vparams(SrsConfDirective* engine, vector<string>& vparams) | 2106 | +vector<string> SrsConfig::get_engine_vparams(SrsConfDirective* engine) |
| 2081 | { | 2107 | { |
| 2108 | + vector<string> vparams; | ||
| 2109 | + | ||
| 2082 | if (!engine) { | 2110 | if (!engine) { |
| 2083 | - return; | 2111 | + return vparams; |
| 2084 | } | 2112 | } |
| 2085 | 2113 | ||
| 2086 | SrsConfDirective* conf = engine->get("vparams"); | 2114 | SrsConfDirective* conf = engine->get("vparams"); |
| 2087 | if (!conf) { | 2115 | if (!conf) { |
| 2088 | - return; | 2116 | + return vparams; |
| 2089 | } | 2117 | } |
| 2090 | 2118 | ||
| 2091 | for (int i = 0; i < (int)conf->directives.size(); i++) { | 2119 | for (int i = 0; i < (int)conf->directives.size(); i++) { |
| @@ -2097,28 +2125,8 @@ void SrsConfig::get_engine_vparams(SrsConfDirective* engine, vector<string>& vpa | @@ -2097,28 +2125,8 @@ void SrsConfig::get_engine_vparams(SrsConfDirective* engine, vector<string>& vpa | ||
| 2097 | vparams.push_back("-" + p->name); | 2125 | vparams.push_back("-" + p->name); |
| 2098 | vparams.push_back(p->arg0()); | 2126 | vparams.push_back(p->arg0()); |
| 2099 | } | 2127 | } |
| 2100 | -} | ||
| 2101 | - | ||
| 2102 | -void SrsConfig::get_engine_vfilter(SrsConfDirective* engine, vector<string>& vfilter) | ||
| 2103 | -{ | ||
| 2104 | - if (!engine) { | ||
| 2105 | - return; | ||
| 2106 | - } | ||
| 2107 | 2128 | ||
| 2108 | - SrsConfDirective* conf = engine->get("vfilter"); | ||
| 2109 | - if (!conf) { | ||
| 2110 | - return; | ||
| 2111 | - } | ||
| 2112 | - | ||
| 2113 | - for (int i = 0; i < (int)conf->directives.size(); i++) { | ||
| 2114 | - SrsConfDirective* p = conf->directives[i]; | ||
| 2115 | - if (!p) { | ||
| 2116 | - continue; | ||
| 2117 | - } | ||
| 2118 | - | ||
| 2119 | - vfilter.push_back("-" + p->name); | ||
| 2120 | - vfilter.push_back(p->arg0()); | ||
| 2121 | - } | 2129 | + return vparams; |
| 2122 | } | 2130 | } |
| 2123 | 2131 | ||
| 2124 | string SrsConfig::get_engine_acodec(SrsConfDirective* engine) | 2132 | string SrsConfig::get_engine_acodec(SrsConfDirective* engine) |
| @@ -2177,15 +2185,17 @@ int SrsConfig::get_engine_achannels(SrsConfDirective* engine) | @@ -2177,15 +2185,17 @@ int SrsConfig::get_engine_achannels(SrsConfDirective* engine) | ||
| 2177 | return ::atoi(conf->arg0().c_str()); | 2185 | return ::atoi(conf->arg0().c_str()); |
| 2178 | } | 2186 | } |
| 2179 | 2187 | ||
| 2180 | -void SrsConfig::get_engine_aparams(SrsConfDirective* engine, vector<string>& aparams) | 2188 | +vector<string> SrsConfig::get_engine_aparams(SrsConfDirective* engine) |
| 2181 | { | 2189 | { |
| 2190 | + vector<string> aparams; | ||
| 2191 | + | ||
| 2182 | if (!engine) { | 2192 | if (!engine) { |
| 2183 | - return; | 2193 | + return aparams; |
| 2184 | } | 2194 | } |
| 2185 | 2195 | ||
| 2186 | SrsConfDirective* conf = engine->get("aparams"); | 2196 | SrsConfDirective* conf = engine->get("aparams"); |
| 2187 | if (!conf) { | 2197 | if (!conf) { |
| 2188 | - return; | 2198 | + return aparams; |
| 2189 | } | 2199 | } |
| 2190 | 2200 | ||
| 2191 | for (int i = 0; i < (int)conf->directives.size(); i++) { | 2201 | for (int i = 0; i < (int)conf->directives.size(); i++) { |
| @@ -2197,6 +2207,8 @@ void SrsConfig::get_engine_aparams(SrsConfDirective* engine, vector<string>& apa | @@ -2197,6 +2207,8 @@ void SrsConfig::get_engine_aparams(SrsConfDirective* engine, vector<string>& apa | ||
| 2197 | aparams.push_back("-" + p->name); | 2207 | aparams.push_back("-" + p->name); |
| 2198 | aparams.push_back(p->arg0()); | 2208 | aparams.push_back(p->arg0()); |
| 2199 | } | 2209 | } |
| 2210 | + | ||
| 2211 | + return aparams; | ||
| 2200 | } | 2212 | } |
| 2201 | 2213 | ||
| 2202 | string SrsConfig::get_engine_output(SrsConfDirective* engine) | 2214 | string SrsConfig::get_engine_output(SrsConfDirective* engine) |
| @@ -2213,11 +2225,13 @@ string SrsConfig::get_engine_output(SrsConfDirective* engine) | @@ -2213,11 +2225,13 @@ string SrsConfig::get_engine_output(SrsConfDirective* engine) | ||
| 2213 | return conf->arg0(); | 2225 | return conf->arg0(); |
| 2214 | } | 2226 | } |
| 2215 | 2227 | ||
| 2216 | -void SrsConfig::get_ingesters(std::string vhost, std::vector<SrsConfDirective*>& ingeters) | 2228 | +vector<SrsConfDirective*> SrsConfig::get_ingesters(string vhost) |
| 2217 | { | 2229 | { |
| 2230 | + vector<SrsConfDirective*> ingeters; | ||
| 2231 | + | ||
| 2218 | SrsConfDirective* vhost_conf = get_vhost(vhost); | 2232 | SrsConfDirective* vhost_conf = get_vhost(vhost); |
| 2219 | if (!vhost_conf) { | 2233 | if (!vhost_conf) { |
| 2220 | - return; | 2234 | + return ingeters; |
| 2221 | } | 2235 | } |
| 2222 | 2236 | ||
| 2223 | for (int i = 0; i < (int)vhost_conf->directives.size(); i++) { | 2237 | for (int i = 0; i < (int)vhost_conf->directives.size(); i++) { |
| @@ -2228,10 +2242,10 @@ void SrsConfig::get_ingesters(std::string vhost, std::vector<SrsConfDirective*>& | @@ -2228,10 +2242,10 @@ void SrsConfig::get_ingesters(std::string vhost, std::vector<SrsConfDirective*>& | ||
| 2228 | } | 2242 | } |
| 2229 | } | 2243 | } |
| 2230 | 2244 | ||
| 2231 | - return; | 2245 | + return ingeters; |
| 2232 | } | 2246 | } |
| 2233 | 2247 | ||
| 2234 | -SrsConfDirective* SrsConfig::get_ingest_by_id(std::string vhost, std::string ingest_id) | 2248 | +SrsConfDirective* SrsConfig::get_ingest_by_id(string vhost, string ingest_id) |
| 2235 | { | 2249 | { |
| 2236 | SrsConfDirective* conf = get_vhost(vhost); | 2250 | SrsConfDirective* conf = get_vhost(vhost); |
| 2237 | if (!conf) { | 2251 | if (!conf) { |
| @@ -601,97 +601,112 @@ public: | @@ -601,97 +601,112 @@ public: | ||
| 601 | */ | 601 | */ |
| 602 | virtual std::vector<SrsConfDirective*> get_transcode_engines(SrsConfDirective* transcode); | 602 | virtual std::vector<SrsConfDirective*> get_transcode_engines(SrsConfDirective* transcode); |
| 603 | /** | 603 | /** |
| 604 | - * | 604 | + * whether the engine is enabled. |
| 605 | */ | 605 | */ |
| 606 | virtual bool get_engine_enabled(SrsConfDirective* engine); | 606 | virtual bool get_engine_enabled(SrsConfDirective* engine); |
| 607 | /** | 607 | /** |
| 608 | - * | 608 | + * get the vfilter of engine, |
| 609 | + * the video filter set before the vcodec of FFMPEG. | ||
| 610 | + */ | ||
| 611 | + virtual std::vector<std::string> get_engine_vfilter(SrsConfDirective* engine); | ||
| 612 | + /** | ||
| 613 | + * get the vcodec of engine, | ||
| 614 | + * the codec of video, copy or libx264 | ||
| 609 | */ | 615 | */ |
| 610 | virtual std::string get_engine_vcodec(SrsConfDirective* engine); | 616 | virtual std::string get_engine_vcodec(SrsConfDirective* engine); |
| 611 | /** | 617 | /** |
| 612 | - * | 618 | + * get the vbitrate of engine, |
| 619 | + * the bitrate in kbps of video, for example, 800kbps | ||
| 613 | */ | 620 | */ |
| 614 | virtual int get_engine_vbitrate(SrsConfDirective* engine); | 621 | virtual int get_engine_vbitrate(SrsConfDirective* engine); |
| 615 | /** | 622 | /** |
| 616 | - * | 623 | + * get the vfps of engine. |
| 624 | + * the video fps, for example, 25fps | ||
| 617 | */ | 625 | */ |
| 618 | virtual double get_engine_vfps(SrsConfDirective* engine); | 626 | virtual double get_engine_vfps(SrsConfDirective* engine); |
| 619 | /** | 627 | /** |
| 620 | - * | 628 | + * get the vwidth of engine, |
| 629 | + * the video width, for example, 1024 | ||
| 621 | */ | 630 | */ |
| 622 | virtual int get_engine_vwidth(SrsConfDirective* engine); | 631 | virtual int get_engine_vwidth(SrsConfDirective* engine); |
| 623 | /** | 632 | /** |
| 624 | - * | 633 | + * get the vheight of engine, |
| 634 | + * the video height, for example, 576 | ||
| 625 | */ | 635 | */ |
| 626 | virtual int get_engine_vheight(SrsConfDirective* engine); | 636 | virtual int get_engine_vheight(SrsConfDirective* engine); |
| 627 | /** | 637 | /** |
| 628 | - * | 638 | + * get the vthreads of engine, |
| 639 | + * the video transcode libx264 threads, for instance, 8 | ||
| 629 | */ | 640 | */ |
| 630 | virtual int get_engine_vthreads(SrsConfDirective* engine); | 641 | virtual int get_engine_vthreads(SrsConfDirective* engine); |
| 631 | /** | 642 | /** |
| 632 | - * | 643 | + * get the vprofile of engine, |
| 644 | + * the libx264 profile, can be high,main,baseline | ||
| 633 | */ | 645 | */ |
| 634 | virtual std::string get_engine_vprofile(SrsConfDirective* engine); | 646 | virtual std::string get_engine_vprofile(SrsConfDirective* engine); |
| 635 | /** | 647 | /** |
| 636 | - * | 648 | + * get the vpreset of engine, |
| 649 | + * the libx264 preset, can be ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo | ||
| 637 | */ | 650 | */ |
| 638 | virtual std::string get_engine_vpreset(SrsConfDirective* engine); | 651 | virtual std::string get_engine_vpreset(SrsConfDirective* engine); |
| 639 | /** | 652 | /** |
| 640 | - * | 653 | + * get the additional video params. |
| 641 | */ | 654 | */ |
| 642 | - virtual void get_engine_vparams(SrsConfDirective* engine, std::vector<std::string>& vparams); | 655 | + virtual std::vector<std::string> get_engine_vparams(SrsConfDirective* engine); |
| 643 | /** | 656 | /** |
| 644 | - * | ||
| 645 | - */ | ||
| 646 | - virtual void get_engine_vfilter(SrsConfDirective* engine, std::vector<std::string>& vfilter); | ||
| 647 | - /** | ||
| 648 | - * | 657 | + * get the acodec of engine, |
| 658 | + * the audio codec can be copy or libaacplus | ||
| 649 | */ | 659 | */ |
| 650 | virtual std::string get_engine_acodec(SrsConfDirective* engine); | 660 | virtual std::string get_engine_acodec(SrsConfDirective* engine); |
| 651 | /** | 661 | /** |
| 652 | - * | 662 | + * get the abitrate of engine, |
| 663 | + * the audio bitrate in kbps, for instance, 64kbps. | ||
| 653 | */ | 664 | */ |
| 654 | virtual int get_engine_abitrate(SrsConfDirective* engine); | 665 | virtual int get_engine_abitrate(SrsConfDirective* engine); |
| 655 | /** | 666 | /** |
| 656 | - * | 667 | + * get the asample_rate of engine, |
| 668 | + * the audio sample_rate, for instance, 44100HZ | ||
| 657 | */ | 669 | */ |
| 658 | virtual int get_engine_asample_rate(SrsConfDirective* engine); | 670 | virtual int get_engine_asample_rate(SrsConfDirective* engine); |
| 659 | /** | 671 | /** |
| 660 | - * | 672 | + * get the achannels of engine, |
| 673 | + * the audio channel, for instance, 1 for mono, 2 for stereo. | ||
| 661 | */ | 674 | */ |
| 662 | virtual int get_engine_achannels(SrsConfDirective* engine); | 675 | virtual int get_engine_achannels(SrsConfDirective* engine); |
| 663 | /** | 676 | /** |
| 664 | - * | 677 | + * get the aparams of engine, |
| 678 | + * the audio additional params. | ||
| 665 | */ | 679 | */ |
| 666 | - virtual void get_engine_aparams(SrsConfDirective* engine, std::vector<std::string>& aparams); | 680 | + virtual std::vector<std::string> get_engine_aparams(SrsConfDirective* engine); |
| 667 | /** | 681 | /** |
| 668 | - * | 682 | + * get the output of engine, for example, rtmp://127.0.0.1/live/livestream, |
| 683 | + * @remark, we will use some variable, for instance, [vhost] to substitude with vhost. | ||
| 669 | */ | 684 | */ |
| 670 | virtual std::string get_engine_output(SrsConfDirective* engine); | 685 | virtual std::string get_engine_output(SrsConfDirective* engine); |
| 671 | // ingest section | 686 | // ingest section |
| 672 | public: | 687 | public: |
| 673 | /** | 688 | /** |
| 674 | - * | 689 | + * get the ingest directives of vhost. |
| 675 | */ | 690 | */ |
| 676 | - virtual void get_ingesters(std::string vhost, std::vector<SrsConfDirective*>& ingeters); | 691 | + virtual std::vector<SrsConfDirective*> get_ingesters(std::string vhost); |
| 677 | /** | 692 | /** |
| 678 | - * | 693 | + * get specified ingest. |
| 679 | */ | 694 | */ |
| 680 | virtual SrsConfDirective* get_ingest_by_id(std::string vhost, std::string ingest_id); | 695 | virtual SrsConfDirective* get_ingest_by_id(std::string vhost, std::string ingest_id); |
| 681 | /** | 696 | /** |
| 682 | - * | 697 | + * whether ingest is enalbed. |
| 683 | */ | 698 | */ |
| 684 | virtual bool get_ingest_enabled(SrsConfDirective* ingest); | 699 | virtual bool get_ingest_enabled(SrsConfDirective* ingest); |
| 685 | /** | 700 | /** |
| 686 | - * | 701 | + * get the ingest ffmpeg tool |
| 687 | */ | 702 | */ |
| 688 | virtual std::string get_ingest_ffmpeg(SrsConfDirective* ingest); | 703 | virtual std::string get_ingest_ffmpeg(SrsConfDirective* ingest); |
| 689 | /** | 704 | /** |
| 690 | - * | 705 | + * get the ingest input type, file or stream. |
| 691 | */ | 706 | */ |
| 692 | virtual std::string get_ingest_input_type(SrsConfDirective* ingest); | 707 | virtual std::string get_ingest_input_type(SrsConfDirective* ingest); |
| 693 | /** | 708 | /** |
| 694 | - * | 709 | + * get the ingest input url. |
| 695 | */ | 710 | */ |
| 696 | virtual std::string get_ingest_input_url(SrsConfDirective* ingest); | 711 | virtual std::string get_ingest_input_url(SrsConfDirective* ingest); |
| 697 | // log section | 712 | // log section |
| @@ -96,21 +96,21 @@ int SrsFFMPEG::initialize_transcode(SrsConfDirective* engine) | @@ -96,21 +96,21 @@ int SrsFFMPEG::initialize_transcode(SrsConfDirective* engine) | ||
| 96 | { | 96 | { |
| 97 | int ret = ERROR_SUCCESS; | 97 | int ret = ERROR_SUCCESS; |
| 98 | 98 | ||
| 99 | - _srs_config->get_engine_vfilter(engine, vfilter); | ||
| 100 | - vcodec = _srs_config->get_engine_vcodec(engine); | ||
| 101 | - vbitrate = _srs_config->get_engine_vbitrate(engine); | ||
| 102 | - vfps = _srs_config->get_engine_vfps(engine); | ||
| 103 | - vwidth = _srs_config->get_engine_vwidth(engine); | ||
| 104 | - vheight = _srs_config->get_engine_vheight(engine); | ||
| 105 | - vthreads = _srs_config->get_engine_vthreads(engine); | ||
| 106 | - vprofile = _srs_config->get_engine_vprofile(engine); | ||
| 107 | - vpreset = _srs_config->get_engine_vpreset(engine); | ||
| 108 | - _srs_config->get_engine_vparams(engine, vparams); | ||
| 109 | - acodec = _srs_config->get_engine_acodec(engine); | ||
| 110 | - abitrate = _srs_config->get_engine_abitrate(engine); | ||
| 111 | - asample_rate = _srs_config->get_engine_asample_rate(engine); | ||
| 112 | - achannels = _srs_config->get_engine_achannels(engine); | ||
| 113 | - _srs_config->get_engine_aparams(engine, aparams); | 99 | + vfilter = _srs_config->get_engine_vfilter(engine); |
| 100 | + vcodec = _srs_config->get_engine_vcodec(engine); | ||
| 101 | + vbitrate = _srs_config->get_engine_vbitrate(engine); | ||
| 102 | + vfps = _srs_config->get_engine_vfps(engine); | ||
| 103 | + vwidth = _srs_config->get_engine_vwidth(engine); | ||
| 104 | + vheight = _srs_config->get_engine_vheight(engine); | ||
| 105 | + vthreads = _srs_config->get_engine_vthreads(engine); | ||
| 106 | + vprofile = _srs_config->get_engine_vprofile(engine); | ||
| 107 | + vpreset = _srs_config->get_engine_vpreset(engine); | ||
| 108 | + vparams = _srs_config->get_engine_vparams(engine); | ||
| 109 | + acodec = _srs_config->get_engine_acodec(engine); | ||
| 110 | + abitrate = _srs_config->get_engine_abitrate(engine); | ||
| 111 | + asample_rate = _srs_config->get_engine_asample_rate(engine); | ||
| 112 | + achannels = _srs_config->get_engine_achannels(engine); | ||
| 113 | + aparams = _srs_config->get_engine_aparams(engine); | ||
| 114 | 114 | ||
| 115 | // ensure the size is even. | 115 | // ensure the size is even. |
| 116 | vwidth -= vwidth % 2; | 116 | vwidth -= vwidth % 2; |
| @@ -93,8 +93,7 @@ int SrsIngester::parse_ingesters(SrsConfDirective* vhost) | @@ -93,8 +93,7 @@ int SrsIngester::parse_ingesters(SrsConfDirective* vhost) | ||
| 93 | { | 93 | { |
| 94 | int ret = ERROR_SUCCESS; | 94 | int ret = ERROR_SUCCESS; |
| 95 | 95 | ||
| 96 | - std::vector<SrsConfDirective*> ingesters; | ||
| 97 | - _srs_config->get_ingesters(vhost->arg0(), ingesters); | 96 | + std::vector<SrsConfDirective*> ingesters = _srs_config->get_ingesters(vhost->arg0()); |
| 98 | 97 | ||
| 99 | // create engine | 98 | // create engine |
| 100 | for (int i = 0; i < (int)ingesters.size(); i++) { | 99 | for (int i = 0; i < (int)ingesters.size(); i++) { |
-
请 注册 或 登录 后发表评论