Improved info / embed code generator: now supports smooth and HLS, fixed dynamic URL, added domain-relative URLs, added default port support, added default width/height.
This commit is contained in:
parent
4c4307e033
commit
907001d78b
1 changed files with 49 additions and 15 deletions
|
@ -174,36 +174,70 @@ namespace Connector_HTTP {
|
||||||
if (ServConf["streams"].isMember(streamname) && ServConf["config"]["protocols"].size() > 0){
|
if (ServConf["streams"].isMember(streamname) && ServConf["config"]["protocols"].size() > 0){
|
||||||
json_resp["width"] = ServConf["streams"][streamname]["meta"]["video"]["width"].asInt();
|
json_resp["width"] = ServConf["streams"][streamname]["meta"]["video"]["width"].asInt();
|
||||||
json_resp["height"] = ServConf["streams"][streamname]["meta"]["video"]["height"].asInt();
|
json_resp["height"] = ServConf["streams"][streamname]["meta"]["video"]["height"].asInt();
|
||||||
|
if (json_resp["width"].asInt() < 1 || json_resp["height"].asInt() < 1){
|
||||||
|
json_resp["width"] = 640ll;
|
||||||
|
json_resp["height"] = 480ll;
|
||||||
|
}
|
||||||
|
//find out which connectors are enabled
|
||||||
|
std::set<std::string> conns;
|
||||||
|
for (JSON::ArrIter it = ServConf["config"]["protocols"].ArrBegin(); it != ServConf["config"]["protocols"].ArrEnd(); it++){
|
||||||
|
conns.insert(( *it)["connector"].asString());
|
||||||
|
}
|
||||||
//first, see if we have RTMP working and output all the RTMP.
|
//first, see if we have RTMP working and output all the RTMP.
|
||||||
for (JSON::ArrIter it = ServConf["config"]["protocols"].ArrBegin(); it != ServConf["config"]["protocols"].ArrEnd(); it++){
|
for (JSON::ArrIter it = ServConf["config"]["protocols"].ArrBegin(); it != ServConf["config"]["protocols"].ArrEnd(); it++){
|
||||||
if (( *it)["connector"].asString() == "RTMP"){
|
if (( *it)["connector"].asString() == "RTMP"){
|
||||||
|
if (( *it)["port"].asInt() == 0){
|
||||||
|
( *it)["port"] = 1935ll;
|
||||||
|
}
|
||||||
JSON::Value tmp;
|
JSON::Value tmp;
|
||||||
tmp["type"] = "rtmp";
|
tmp["type"] = "rtmp";
|
||||||
tmp["url"] = "rtmp://" + host + ":" + ( *it)["port"].asString() + "/play/" + streamname;
|
tmp["url"] = "rtmp://" + host + ":" + ( *it)["port"].asString() + "/play/" + streamname;
|
||||||
json_resp["source"].append(tmp);
|
json_resp["source"].append(tmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//then, see if we have HTTP working and output all the dynamic.
|
/// \todo Add raw MPEG2 TS support here?
|
||||||
|
//then, see if we have HTTP working and output all the HTTP.
|
||||||
for (JSON::ArrIter it = ServConf["config"]["protocols"].ArrBegin(); it != ServConf["config"]["protocols"].ArrEnd(); it++){
|
for (JSON::ArrIter it = ServConf["config"]["protocols"].ArrBegin(); it != ServConf["config"]["protocols"].ArrEnd(); it++){
|
||||||
if (( *it)["connector"].asString() == "HTTP"){
|
if (( *it)["connector"].asString() == "HTTP"){
|
||||||
|
if (( *it)["port"].asInt() == 0){
|
||||||
|
( *it)["port"] = 8080ll;
|
||||||
|
}
|
||||||
|
// check for dynamic
|
||||||
|
if (conns.count("HTTPDynamic")){
|
||||||
JSON::Value tmp;
|
JSON::Value tmp;
|
||||||
tmp["type"] = "f4v";
|
tmp["type"] = "f4v";
|
||||||
tmp["url"] = "http://" + host + ":" + ( *it)["port"].asString() + "/" + streamname + "/manifest.f4m";
|
tmp["url"] = "http://" + host + ":" + ( *it)["port"].asString() + "/dynamic/" + streamname + "/manifest.f4m";
|
||||||
|
tmp["relurl"] = "/dynamic/" + streamname + "/manifest.f4m";
|
||||||
json_resp["source"].append(tmp);
|
json_resp["source"].append(tmp);
|
||||||
}
|
}
|
||||||
|
// check for smooth
|
||||||
|
if (conns.count("HTTPSmooth")){
|
||||||
|
JSON::Value tmp;
|
||||||
|
tmp["type"] = "ism";
|
||||||
|
tmp["url"] = "http://" + host + ":" + ( *it)["port"].asString() + "/smooth/" + streamname + ".ism/Manifest";
|
||||||
|
tmp["relurl"] = "/smooth/" + streamname + ".ism/Manifest";
|
||||||
|
json_resp["source"].append(tmp);
|
||||||
}
|
}
|
||||||
//and all the progressive.
|
// check for HLS
|
||||||
for (JSON::ArrIter it = ServConf["config"]["protocols"].ArrBegin(); it != ServConf["config"]["protocols"].ArrEnd(); it++){
|
if (conns.count("HTTPLive")){
|
||||||
if (( *it)["connector"].asString() == "HTTP"){
|
JSON::Value tmp;
|
||||||
|
tmp["type"] = "hls";
|
||||||
|
tmp["url"] = "http://" + host + ":" + ( *it)["port"].asString() + "/hls/" + streamname + "/index.m3u8";
|
||||||
|
tmp["relurl"] = "/hls/" + streamname + "/index.m3u8";
|
||||||
|
json_resp["source"].append(tmp);
|
||||||
|
}
|
||||||
|
// check for progressive
|
||||||
|
if (conns.count("HTTPProgressive")){
|
||||||
JSON::Value tmp;
|
JSON::Value tmp;
|
||||||
tmp["type"] = "flv";
|
tmp["type"] = "flv";
|
||||||
tmp["url"] = "http://" + host + ":" + ( *it)["port"].asString() + "/" + streamname + ".flv";
|
tmp["url"] = "http://" + host + ":" + ( *it)["port"].asString() + "/" + streamname + ".flv";
|
||||||
|
tmp["relurl"] = "/" + streamname + ".flv";
|
||||||
json_resp["source"].append(tmp);
|
json_resp["source"].append(tmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
json_resp["error"] = "The specified stream is not available on this server.";
|
json_resp["error"] = "The specified stream is not available on this server.";
|
||||||
json_resp["bbq"] = "sauce"; //for legacy purposes ^_^
|
|
||||||
}
|
}
|
||||||
response += "mistvideo['" + streamname + "'] = " + json_resp.toString() + ";\n";
|
response += "mistvideo['" + streamname + "'] = " + json_resp.toString() + ";\n";
|
||||||
if (url.substr(0, 6) != "/info_" && !json_resp.isMember("error")){
|
if (url.substr(0, 6) != "/info_" && !json_resp.isMember("error")){
|
||||||
|
|
Loading…
Add table
Reference in a new issue