mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
for #711, support prefile for transcode. 3.0.12
This commit is contained in:
parent
35cd4c407c
commit
4709d0214c
8 changed files with 84 additions and 28 deletions
|
@ -3982,7 +3982,7 @@ int SrsConfig::check_config()
|
|||
&& e != "vbitrate" && e != "vfps" && e != "vwidth" && e != "vheight"
|
||||
&& e != "vthreads" && e != "vprofile" && e != "vpreset" && e != "vparams"
|
||||
&& e != "acodec" && e != "abitrate" && e != "asample_rate" && e != "achannels"
|
||||
&& e != "aparams" && e != "output"
|
||||
&& e != "aparams" && e != "output" && e != "perfile"
|
||||
&& e != "iformat" && e != "oformat"
|
||||
) {
|
||||
ret = ERROR_SYSTEM_CONFIG_INVALID;
|
||||
|
@ -5377,6 +5377,41 @@ bool SrsConfig::get_engine_enabled(SrsConfDirective* conf)
|
|||
return SRS_CONF_PERFER_FALSE(conf->arg0());
|
||||
}
|
||||
|
||||
string srs_prefix_underscores_ifno(string name)
|
||||
{
|
||||
if (srs_string_starts_with(name, "-")) {
|
||||
return name;
|
||||
} else {
|
||||
return "-" + name;
|
||||
}
|
||||
}
|
||||
|
||||
vector<string> SrsConfig::get_engine_perfile(SrsConfDirective* conf)
|
||||
{
|
||||
vector<string> perfile;
|
||||
|
||||
if (!conf) {
|
||||
return perfile;
|
||||
}
|
||||
|
||||
conf = conf->get("perfile");
|
||||
if (!conf) {
|
||||
return perfile;
|
||||
}
|
||||
|
||||
for (int i = 0; i < (int)conf->directives.size(); i++) {
|
||||
SrsConfDirective* option = conf->directives[i];
|
||||
if (!option) {
|
||||
continue;
|
||||
}
|
||||
|
||||
perfile.push_back(srs_prefix_underscores_ifno(option->name));
|
||||
perfile.push_back(option->arg0());
|
||||
}
|
||||
|
||||
return perfile;
|
||||
}
|
||||
|
||||
string SrsConfig::get_engine_iformat(SrsConfDirective* conf)
|
||||
{
|
||||
static string DEFAULT = "flv";
|
||||
|
@ -5412,7 +5447,7 @@ vector<string> SrsConfig::get_engine_vfilter(SrsConfDirective* conf)
|
|||
continue;
|
||||
}
|
||||
|
||||
vfilter.push_back("-" + filter->name);
|
||||
vfilter.push_back(srs_prefix_underscores_ifno(filter->name));
|
||||
vfilter.push_back(filter->arg0());
|
||||
}
|
||||
|
||||
|
@ -5566,7 +5601,7 @@ vector<string> SrsConfig::get_engine_vparams(SrsConfDirective* conf)
|
|||
continue;
|
||||
}
|
||||
|
||||
vparams.push_back("-" + filter->name);
|
||||
vparams.push_back(srs_prefix_underscores_ifno(filter->name));
|
||||
vparams.push_back(filter->arg0());
|
||||
}
|
||||
|
||||
|
@ -5656,7 +5691,7 @@ vector<string> SrsConfig::get_engine_aparams(SrsConfDirective* conf)
|
|||
continue;
|
||||
}
|
||||
|
||||
aparams.push_back("-" + filter->name);
|
||||
aparams.push_back(srs_prefix_underscores_ifno(filter->name));
|
||||
aparams.push_back(filter->arg0());
|
||||
}
|
||||
|
||||
|
|
|
@ -976,6 +976,10 @@ public:
|
|||
* whether the engine is enabled.
|
||||
*/
|
||||
virtual bool get_engine_enabled(SrsConfDirective* conf);
|
||||
/**
|
||||
* get the perfile of engine
|
||||
*/
|
||||
virtual std::vector<std::string> get_engine_perfile(SrsConfDirective* conf);
|
||||
/**
|
||||
* get the iformat of engine
|
||||
*/
|
||||
|
|
|
@ -112,6 +112,7 @@ int SrsFFMPEG::initialize_transcode(SrsConfDirective* engine)
|
|||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
perfile = _srs_config->get_engine_perfile(engine);
|
||||
iformat = _srs_config->get_engine_iformat(engine);
|
||||
vfilter = _srs_config->get_engine_vfilter(engine);
|
||||
vcodec = _srs_config->get_engine_vcodec(engine);
|
||||
|
@ -264,6 +265,17 @@ int SrsFFMPEG::start()
|
|||
params.push_back(_iparams);
|
||||
}
|
||||
|
||||
// build the perfile
|
||||
if (!perfile.empty()) {
|
||||
std::vector<std::string>::iterator it;
|
||||
for (it = perfile.begin(); it != perfile.end(); ++it) {
|
||||
std::string p = *it;
|
||||
if (!p.empty()) {
|
||||
params.push_back(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// input.
|
||||
if (iformat != "off" && !iformat.empty()) {
|
||||
params.push_back("-f");
|
||||
|
|
|
@ -51,6 +51,7 @@ private:
|
|||
private:
|
||||
std::string ffmpeg;
|
||||
std::string _iparams;
|
||||
std::vector<std::string> perfile;
|
||||
std::string iformat;
|
||||
std::string input;
|
||||
std::vector<std::string> vfilter;
|
||||
|
|
|
@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
// current release version
|
||||
#define VERSION_MAJOR 3
|
||||
#define VERSION_MINOR 0
|
||||
#define VERSION_REVISION 11
|
||||
#define VERSION_REVISION 12
|
||||
|
||||
// generated by configure, only macros.
|
||||
#include <srs_auto_headers.hpp>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue