同步操作将从 广州灵派科技有限公司/Encoder 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "Push.h"#include "Config.h"#include <QFile>#include "Json.h"Push::Push(QObject *parent) : QObject(parent){srcA=NULL;srcV=NULL;lastSrcA=NULL;lastSrcV=NULL;bPushing=false;preview=Link::create("Mux");QVariantMap data;data["path"]="rtmp://127.0.0.1/live/preview";preview->setData(data);}void Push::init(){QFile file("/link/config/push.json");file.open(QFile::ReadOnly);QString json=file.readAll();file.close();update(json);if(config["autorun"].toBool())start();}bool Push::start(){foreach(PushUrl *url,urlList){if(url->enable)url->mux->start();}startTime=QDateTime::currentDateTime();preview->start();bPushing=true;return true;}bool Push::stop(){bPushing=false;foreach(PushUrl *url,urlList){url->mux->stop();}preview->stop();return true;}QVariantMap Push::getState(){QVariantMap ret;ret["duration"]=QDateTime::currentMSecsSinceEpoch()-startTime.toMSecsSinceEpoch();ret["pushing"]=bPushing;QVariantList speedList;foreach(PushUrl *url,urlList){if(bPushing && url->enable)speedList<<(url->mux->invoke("getSpeed").toMap()["speed"].toInt()*8/1024);elsespeedList<<0;}ret["speed"]=speedList;return ret;}bool Push::update(QString json){config=Json::decode(json).toMap();Channel *chn=Config::findChannelById(config["srcA"].toInt());if(chn!=NULL)srcA=chn->encA;chn=Config::findChannelById(config["srcV"].toInt());if(chn!=NULL)srcV=chn->encV;if(srcV==NULL)return false;QVariantList list=config["url"].toList();for(int i=0;i<list.count() || i<urlList.count();i++){PushUrl *tmp;if(i>=urlList.count()){tmp=new PushUrl();tmp->mux=Link::create("Mux");urlList.append(tmp);}if(i>=list.count()){urlList.last()->mux->stop(true);delete urlList.last()->mux;urlList.removeLast();continue;}tmp=urlList[i];tmp->enable=list[i].toMap()["enable"].toBool();tmp->path=list[i].toMap()["path"].toString();QVariantMap data;data["path"]=tmp->path;data["bufLenV"]=256;data["bufLenA"]=1024;data["thread"]=true;if(srcA==NULL)data["mute"]=true;else{if(lastSrcA!=NULL && lastSrcA!=srcA){lastSrcA->unLinkA(tmp->mux);lastSrcA->unLinkA(preview);}srcA->linkA(tmp->mux);srcA->linkA(preview);}if(lastSrcV!=NULL && lastSrcV!=srcV){lastSrcV->unLinkV(tmp->mux);lastSrcV->unLinkV(preview);}srcV->linkV(tmp->mux);srcV->linkV(preview);tmp->mux->setData(data);if(bPushing){if(tmp->enable)tmp->mux->start();elsetmp->mux->stop();}}lastSrcA=srcA;lastSrcV=srcV;Json::saveFile(config,"/link/config/push.json");return true;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。