winlin

add author byteman for h264 to flv.

... ... @@ -5,3 +5,4 @@ Authors ordered by first contribution.
* xiangcheng.liu<liuxc0116@foxmail.com>
* naijia.liu<youngcow@youngcow.net>
* alcoholyi<alcoholyi@qq.com>
* byteman<wangchen2011@gmail.com>
... ...
... ... @@ -91,6 +91,30 @@ http_stream {
vhost __defaultVhost__ {
}
# vhost for edge, edge and origin is the same vhost
vhost same.edge.srs.com {
# the mode of vhost, local or remote.
# local: vhost is origin vhost, which provides stream source.
# remote: vhost is edge vhost, which pull/push to origin.
# default: local
mode remote;
# for edge(remote mode), user must specifies the origin server
# format as: <server_name|ip>[:port]
# @remark user can specifies multiple origin for error backup, by space,
# for example, 192.168.1.100:1935 192.168.1.101:1935 192.168.1.102:1935
origin 127.0.0.1:1935 localhost:1935;
}
# vhost for edge, chnage vhost.
vhost change.edge.srs.com {
mode remote;
origin 127.0.0.1:1935 localhost:1935 {
# specify the vhost to override the vhost in client request.
vhost edge2.srs.com;
# specify the refer(pageUrl) to override the refer in client request.
refer http://srs/index.html;
}
}
# vhost for dvr
vhost dvr.srs.com {
# dvr RTMP stream to file,
... ...
... ... @@ -1805,6 +1805,22 @@ int SrsConfig::get_bw_check_limit_kbps(const string &vhost)
return ::atoi(conf->arg0().c_str());
}
bool SrsConfig::get_vhost_is_edge(std::string vhost)
{
SrsConfDirective* conf = get_vhost(vhost);
if (!conf) {
return false;
}
conf = conf->get("mode");
if (!conf || conf->arg0() != "remote") {
return false;
}
return true;
}
SrsConfDirective* SrsConfig::get_transcode(string vhost, string scope)
{
SrsConfDirective* conf = get_vhost(vhost);
... ...
... ... @@ -163,7 +163,7 @@ public:
virtual int get_pithy_print_ingester();
virtual int get_pithy_print_hls();
virtual int get_pithy_print_play();
// vhost section
// vhost specified section
public:
virtual SrsConfDirective* get_vhost(std::string vhost);
virtual void get_vhosts(std::vector<SrsConfDirective*>& vhosts);
... ... @@ -190,6 +190,9 @@ public:
virtual std::string get_bw_check_key(const std::string& vhost);
virtual int get_bw_check_interval_ms(const std::string& vhost);
virtual int get_bw_check_limit_kbps(const std::string& vhost);
// vhost edge section
public:
virtual bool get_vhost_is_edge(std::string vhost);
// vhost transcode section
public:
virtual SrsConfDirective* get_transcode(std::string vhost, std::string scope);
... ...
... ... @@ -286,8 +286,10 @@ int SrsRtmpConn::stream_service_cycle()
return ret;
}
bool vhost_is_edge = _srs_config->get_vhost_is_edge(req->vhost);
bool enabled_cache = _srs_config->get_gop_cache(req->vhost);
srs_trace("source found, url=%s, enabled_cache=%d", req->get_stream_url().c_str(), enabled_cache);
srs_trace("source found, url=%s, enabled_cache=%d, edge=%d",
req->get_stream_url().c_str(), enabled_cache, vhost_is_edge);
source->set_cache(enabled_cache);
switch (type) {
... ...