Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2015-08-28 23:51:23 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
bdfd0ae09ec49fdd58802f5f988d40282d0b1cda
bdfd0ae0
1 parent
5efd1912
for #319, dumps the http static, remux and globals.
隐藏空白字符变更
内嵌
并排对比
正在显示
4 个修改的文件
包含
326 行增加
和
2 行删除
trunk/conf/full.conf
trunk/src/app/srs_app_config.cpp
trunk/src/app/srs_app_config.hpp
trunk/src/app/srs_app_http_api.cpp
trunk/conf/full.conf
查看文件 @
bdfd0ae
...
...
@@ -443,6 +443,50 @@ vhost ingest.srs.com {
}
}
# the vhost for intest with transcode engine.
vhost
transcode
.
ingest
.
srs
.
com
{
ingest
livestream
{
enabled
on
;
input
{
type
file
;
url
./
doc
/
source
.
200
kbps
.
768
x320
.
flv
;
}
ffmpeg
./
objs
/
ffmpeg
/
bin
/
ffmpeg
;
engine
{
enabled
off
;
iformat
flv
;
vfilter
{
i
./
doc
/
ffmpeg
-
logo
.
png
;
filter_complex
'overlay=10:10'
;
}
vcodec
libx264
;
vbitrate
1500
;
vfps
25
;
vwidth
768
;
vheight
320
;
vthreads
12
;
vprofile
main
;
vpreset
medium
;
vparams
{
t
100
;
coder
1
;
b_strategy
2
;
bf
3
;
refs
10
;
}
acodec
libfdk_aac
;
abitrate
70
;
asample_rate
44100
;
achannels
2
;
aparams
{
profile
:
a
aac_low
;
}
oformat
flv
;
output
rtmp
://
127
.
0
.
0
.
1
:[
port
]/[
app
]?
vhost
=[
vhost
]/[
stream
];
}
}
}
# vhost for http static and flv vod stream for each vhost.
vhost
http
.
static
.
srs
.
com
{
# http static vhost specified config
...
...
trunk/src/app/srs_app_config.cpp
查看文件 @
bdfd0ae
...
...
@@ -1796,6 +1796,177 @@ int SrsConfig::vhost_to_json(SrsConfDirective* vhost, SrsAmf0Object* obj)
{
int
ret
=
ERROR_SUCCESS
;
SrsConfDirective
*
dir
=
NULL
;
// security
if
((
dir
=
vhost
->
get
(
"security"
))
!=
NULL
)
{
SrsAmf0Object
*
security
=
SrsAmf0Any
::
object
();
obj
->
set
(
"security"
,
security
);
SrsAmf0StrictArray
*
allows
=
SrsAmf0Any
::
strict_array
();
security
->
set
(
"allows"
,
allows
);
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
if
(
sdir
->
name
==
"enabled"
)
{
security
->
set
(
"enabled"
,
sdir
->
dumps_arg0_to_boolean
());
}
else
if
(
sdir
->
name
==
"allow"
)
{
SrsAmf0Object
*
allow
=
SrsAmf0Any
::
object
();
allow
->
set
(
"action"
,
SrsAmf0Any
::
str
(
sdir
->
name
.
c_str
()));
allow
->
set
(
"method"
,
SrsAmf0Any
::
str
(
sdir
->
arg0
().
c_str
()));
allow
->
set
(
"entry"
,
SrsAmf0Any
::
str
(
sdir
->
arg1
().
c_str
()));
allows
->
append
(
allow
);
}
}
}
// mrw
if
((
dir
=
vhost
->
get
(
"min_latency"
))
!=
NULL
)
{
obj
->
set
(
"min_latency"
,
dir
->
dumps_arg0_to_boolean
());
}
if
((
dir
=
vhost
->
get
(
"mr"
))
!=
NULL
)
{
SrsAmf0Object
*
mr
=
SrsAmf0Any
::
object
();
obj
->
set
(
"mr"
,
mr
);
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
if
(
sdir
->
name
==
"enabled"
)
{
mr
->
set
(
"enabled"
,
sdir
->
dumps_arg0_to_boolean
());
}
else
if
(
sdir
->
name
==
"latency"
)
{
mr
->
set
(
"latency"
,
sdir
->
dumps_arg0_to_number
());
}
}
}
if
((
dir
=
vhost
->
get
(
"mw_latency"
))
!=
NULL
)
{
obj
->
set
(
"mw_latency"
,
dir
->
dumps_arg0_to_number
());
}
// edge.
if
((
dir
=
vhost
->
get
(
"mode"
))
!=
NULL
)
{
obj
->
set
(
"mode"
,
dir
->
dumps_arg0_to_str
());
}
if
((
dir
=
vhost
->
get
(
"origin"
))
!=
NULL
)
{
obj
->
set
(
"origin"
,
dir
->
dumps_args
());
}
if
((
dir
=
vhost
->
get
(
"token_traverse"
))
!=
NULL
)
{
obj
->
set
(
"token_traverse"
,
dir
->
dumps_arg0_to_boolean
());
}
if
((
dir
=
vhost
->
get
(
"vhost"
))
!=
NULL
)
{
obj
->
set
(
"vhost"
,
dir
->
dumps_arg0_to_str
());
}
// dvr
if
((
dir
=
vhost
->
get
(
"dvr"
))
!=
NULL
)
{
SrsAmf0Object
*
dvr
=
SrsAmf0Any
::
object
();
obj
->
set
(
"dvr"
,
dvr
);
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
if
(
sdir
->
name
==
"enabled"
)
{
dvr
->
set
(
"enabled"
,
sdir
->
dumps_arg0_to_boolean
());
}
else
if
(
sdir
->
name
==
"dvr_plan"
)
{
dvr
->
set
(
"dvr_plan"
,
sdir
->
dumps_arg0_to_str
());
}
else
if
(
sdir
->
name
==
"dvr_path"
)
{
dvr
->
set
(
"dvr_path"
,
sdir
->
dumps_arg0_to_str
());
}
else
if
(
sdir
->
name
==
"dvr_duration"
)
{
dvr
->
set
(
"dvr_duration"
,
sdir
->
dumps_arg0_to_number
());
}
else
if
(
sdir
->
name
==
"dvr_wait_keyframe"
)
{
dvr
->
set
(
"dvr_wait_keyframe"
,
sdir
->
dumps_arg0_to_boolean
());
}
else
if
(
sdir
->
name
==
"time_jitter"
)
{
dvr
->
set
(
"time_jitter"
,
sdir
->
dumps_arg0_to_str
());
}
}
}
// ingest
SrsAmf0StrictArray
*
ingests
=
NULL
;
for
(
int
i
=
0
;
i
<
(
int
)
vhost
->
directives
.
size
();
i
++
)
{
dir
=
vhost
->
directives
.
at
(
i
);
if
(
dir
->
name
!=
"ingest"
)
{
continue
;
}
if
(
!
ingests
)
{
ingests
=
SrsAmf0Any
::
strict_array
();
obj
->
set
(
"ingests"
,
ingests
);
}
SrsAmf0Object
*
ingest
=
SrsAmf0Any
::
object
();
ingest
->
set
(
"id"
,
dir
->
dumps_arg0_to_str
());
ingests
->
append
(
ingest
);
for
(
int
j
=
0
;
j
<
(
int
)
dir
->
directives
.
size
();
j
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
j
);
if
(
sdir
->
name
==
"enabled"
)
{
ingest
->
set
(
"enabled"
,
sdir
->
dumps_arg0_to_boolean
());
}
else
if
(
sdir
->
name
==
"input"
)
{
SrsAmf0Object
*
input
=
SrsAmf0Any
::
object
();
ingest
->
set
(
"input"
,
input
);
SrsConfDirective
*
type
=
sdir
->
get
(
"type"
);
if
(
type
)
{
input
->
set
(
"type"
,
type
->
dumps_arg0_to_str
());
}
SrsConfDirective
*
url
=
sdir
->
get
(
"url"
);
if
(
url
)
{
input
->
set
(
"url"
,
url
->
dumps_arg0_to_str
());
}
}
else
if
(
sdir
->
name
==
"ffmpeg"
)
{
ingest
->
set
(
"ffmpeg"
,
sdir
->
dumps_arg0_to_str
());
}
else
if
(
sdir
->
name
==
"engine"
)
{
SrsAmf0Object
*
engine
=
SrsAmf0Any
::
object
();
ingest
->
set
(
"engine"
,
engine
);
if
((
ret
=
dumps_engine
(
sdir
,
engine
))
!=
ERROR_SUCCESS
)
{
return
ret
;
}
}
}
}
// http_static
if
((
dir
=
vhost
->
get
(
"http_static"
))
!=
NULL
)
{
SrsAmf0Object
*
http_static
=
SrsAmf0Any
::
object
();
obj
->
set
(
"http_static"
,
http_static
);
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
if
(
sdir
->
name
==
"enabled"
)
{
http_static
->
set
(
"enabled"
,
sdir
->
dumps_arg0_to_boolean
());
}
else
if
(
sdir
->
name
==
"mount"
)
{
http_static
->
set
(
"mount"
,
sdir
->
dumps_arg0_to_str
());
}
else
if
(
sdir
->
name
==
"dir"
)
{
http_static
->
set
(
"dir"
,
sdir
->
dumps_arg0_to_str
());
}
}
}
// http_remux
if
((
dir
=
vhost
->
get
(
"http_remux"
))
!=
NULL
)
{
SrsAmf0Object
*
http_remux
=
SrsAmf0Any
::
object
();
obj
->
set
(
"http_remux"
,
http_remux
);
for
(
int
i
=
0
;
i
<
(
int
)
dir
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
dir
->
directives
.
at
(
i
);
if
(
sdir
->
name
==
"enabled"
)
{
http_remux
->
set
(
"enabled"
,
sdir
->
dumps_arg0_to_boolean
());
}
else
if
(
sdir
->
name
==
"fast_cache"
)
{
http_remux
->
set
(
"fast_cache"
,
sdir
->
dumps_arg0_to_number
());
}
else
if
(
sdir
->
name
==
"mount"
)
{
http_remux
->
set
(
"mount"
,
sdir
->
dumps_arg0_to_str
());
}
else
if
(
sdir
->
name
==
"hstrs"
)
{
http_remux
->
set
(
"hstrs"
,
sdir
->
dumps_arg0_to_boolean
());
}
}
}
return
ret
;
}
...
...
@@ -1820,6 +1991,109 @@ int SrsConfig::raw_to_json(SrsAmf0Object* obj)
return
ret
;
}
int
SrsConfig
::
dumps_engine
(
SrsConfDirective
*
dir
,
SrsAmf0Object
*
engine
)
{
int
ret
=
ERROR_SUCCESS
;
SrsConfDirective
*
conf
=
NULL
;
if
((
conf
=
dir
->
get
(
"enabled"
))
!=
NULL
)
{
engine
->
set
(
"enabled"
,
conf
->
dumps_arg0_to_boolean
());
}
if
((
conf
=
dir
->
get
(
"iformat"
))
!=
NULL
)
{
engine
->
set
(
"iformat"
,
conf
->
dumps_arg0_to_str
());
}
if
((
conf
=
dir
->
get
(
"vfilter"
))
!=
NULL
)
{
SrsAmf0Object
*
vfilter
=
SrsAmf0Any
::
object
();
engine
->
set
(
"vfilter"
,
vfilter
);
for
(
int
i
=
0
;
i
<
(
int
)
conf
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
conf
->
directives
.
at
(
i
);
vfilter
->
set
(
sdir
->
name
,
sdir
->
dumps_arg0_to_str
());
}
}
if
((
conf
=
dir
->
get
(
"vcodec"
))
!=
NULL
)
{
engine
->
set
(
"vcodec"
,
conf
->
dumps_arg0_to_str
());
}
if
((
conf
=
dir
->
get
(
"vbitrate"
))
!=
NULL
)
{
engine
->
set
(
"vbitrate"
,
conf
->
dumps_arg0_to_number
());
}
if
((
conf
=
dir
->
get
(
"vfps"
))
!=
NULL
)
{
engine
->
set
(
"vfps"
,
conf
->
dumps_arg0_to_number
());
}
if
((
conf
=
dir
->
get
(
"vwidth"
))
!=
NULL
)
{
engine
->
set
(
"vwidth"
,
conf
->
dumps_arg0_to_number
());
}
if
((
conf
=
dir
->
get
(
"vheight"
))
!=
NULL
)
{
engine
->
set
(
"vheight"
,
conf
->
dumps_arg0_to_number
());
}
if
((
conf
=
dir
->
get
(
"vthreads"
))
!=
NULL
)
{
engine
->
set
(
"vthreads"
,
conf
->
dumps_arg0_to_number
());
}
if
((
conf
=
dir
->
get
(
"vprofile"
))
!=
NULL
)
{
engine
->
set
(
"vprofile"
,
conf
->
dumps_arg0_to_str
());
}
if
((
conf
=
dir
->
get
(
"vpreset"
))
!=
NULL
)
{
engine
->
set
(
"vpreset"
,
conf
->
dumps_arg0_to_str
());
}
if
((
conf
=
dir
->
get
(
"vparams"
))
!=
NULL
)
{
SrsAmf0Object
*
vparams
=
SrsAmf0Any
::
object
();
engine
->
set
(
"vparams"
,
vparams
);
for
(
int
i
=
0
;
i
<
(
int
)
conf
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
conf
->
directives
.
at
(
i
);
vparams
->
set
(
sdir
->
name
,
sdir
->
dumps_arg0_to_str
());
}
}
if
((
conf
=
dir
->
get
(
"acodec"
))
!=
NULL
)
{
engine
->
set
(
"acodec"
,
conf
->
dumps_arg0_to_str
());
}
if
((
conf
=
dir
->
get
(
"abitrate"
))
!=
NULL
)
{
engine
->
set
(
"abitrate"
,
conf
->
dumps_arg0_to_number
());
}
if
((
conf
=
dir
->
get
(
"asample_rate"
))
!=
NULL
)
{
engine
->
set
(
"asample_rate"
,
conf
->
dumps_arg0_to_number
());
}
if
((
conf
=
dir
->
get
(
"achannels"
))
!=
NULL
)
{
engine
->
set
(
"achannels"
,
conf
->
dumps_arg0_to_number
());
}
if
((
conf
=
dir
->
get
(
"aparams"
))
!=
NULL
)
{
SrsAmf0Object
*
aparams
=
SrsAmf0Any
::
object
();
engine
->
set
(
"aparams"
,
aparams
);
for
(
int
i
=
0
;
i
<
(
int
)
conf
->
directives
.
size
();
i
++
)
{
SrsConfDirective
*
sdir
=
conf
->
directives
.
at
(
i
);
aparams
->
set
(
sdir
->
name
,
sdir
->
dumps_arg0_to_str
());
}
}
if
((
conf
=
dir
->
get
(
"oformat"
))
!=
NULL
)
{
engine
->
set
(
"oformat"
,
conf
->
dumps_arg0_to_str
());
}
if
((
conf
=
dir
->
get
(
"output"
))
!=
NULL
)
{
engine
->
set
(
"output"
,
conf
->
dumps_arg0_to_str
());
}
return
ret
;
}
string
SrsConfig
::
config
()
{
return
config_file
;
...
...
trunk/src/app/srs_app_config.hpp
查看文件 @
bdfd0ae
...
...
@@ -324,6 +324,12 @@ public:
* dumps the http_api sections to json for raw api info.
*/
virtual
int
raw_to_json
(
SrsAmf0Object
*
obj
);
private
:
/**
* dumps the engine section to amf0 object.
*/
virtual
int
dumps_engine
(
SrsConfDirective
*
dir
,
SrsAmf0Object
*
engine
);
public
:
/**
* get the config file path.
*/
...
...
trunk/src/app/srs_app_http_api.cpp
查看文件 @
bdfd0ae
...
...
@@ -937,7 +937,7 @@ int SrsGoApiRaw::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
if
(
vhost
.
empty
())
{
ret
=
ERROR_SYSTEM_CONFIG_RAW_PARAMS
;
srs_error
(
"raw api query vhost invalid vhost=%s. ret=%d"
,
vhost
.
c_str
(),
ret
);
return
ret
;
return
srs_api_response_code
(
w
,
r
,
ret
)
;
}
SrsConfDirective
*
root
=
_srs_config
->
get_root
();
...
...
@@ -945,7 +945,7 @@ int SrsGoApiRaw::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
if
(
!
conf
)
{
ret
=
ERROR_SYSTEM_CONFIG_RAW_PARAMS
;
srs_error
(
"raw api query vhost invalid vhost=%s. ret=%d"
,
vhost
.
c_str
(),
ret
);
return
ret
;
return
srs_api_response_code
(
w
,
r
,
ret
)
;
}
SrsAmf0Object
*
data
=
SrsAmf0Any
::
object
();
...
...
请
注册
或
登录
后发表评论