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-02-21 16:52:37 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
7077b74d03b36de3e995a438d8c686d7ef2bf106
7077b74d
1 parent
95b4baee
for #179, add dvr plan append.
隐藏空白字符变更
内嵌
并排对比
正在显示
4 个修改的文件
包含
57 行增加
和
4 行删除
trunk/conf/full.conf
trunk/src/app/srs_app_config.hpp
trunk/src/app/srs_app_dvr.cpp
trunk/src/app/srs_app_dvr.hpp
trunk/conf/full.conf
查看文件 @
7077b74
...
...
@@ -284,6 +284,7 @@ vhost dvr.srs.com {
# the dvr plan. canbe:
# session reap flv when session end(unpublish).
# segment reap flv when flv duration exceed the specified dvr_duration.
# append always append to flv file, never reap it.
# api reap flv when api required.
# default: session
dvr_plan
session
;
...
...
trunk/src/app/srs_app_config.hpp
查看文件 @
7077b74
...
...
@@ -60,6 +60,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define SRS_CONF_DEFAULT_DVR_PATH "./objs/nginx/html"
#define SRS_CONF_DEFAULT_DVR_PLAN_SESSION "session"
#define SRS_CONF_DEFAULT_DVR_PLAN_SEGMENT "segment"
#define SRS_CONF_DEFAULT_DVR_PLAN_APPEND "append"
#define SRS_CONF_DEFAULT_DVR_PLAN_API "api"
#define SRS_CONF_DEFAULT_DVR_PLAN SRS_CONF_DEFAULT_DVR_PLAN_SESSION
#define SRS_CONF_DEFAULT_DVR_DURATION 30
...
...
trunk/src/app/srs_app_dvr.cpp
查看文件 @
7077b74
...
...
@@ -86,7 +86,7 @@ bool SrsFlvSegment::is_overflow(int64_t max_duration)
return
duration
>=
max_duration
;
}
int
SrsFlvSegment
::
open
()
int
SrsFlvSegment
::
open
(
bool
use_tmp_file
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
@@ -113,7 +113,7 @@ int SrsFlvSegment::open()
}
// generate the tmp flv path.
if
(
!
fresh_flv_file
)
{
if
(
!
fresh_flv_file
||
!
use_tmp_file
)
{
// when path exists, always append to it.
// so we must use the target flv path as output flv.
tmp_flv_file
=
path
;
...
...
@@ -546,8 +546,11 @@ SrsDvrPlan* SrsDvrPlan::create_plan(string vhost)
return
new
SrsDvrSegmentPlan
();
}
else
if
(
plan
==
SRS_CONF_DEFAULT_DVR_PLAN_SESSION
)
{
return
new
SrsDvrSessionPlan
();
}
else
if
(
plan
==
SRS_CONF_DEFAULT_DVR_PLAN_APPEND
)
{
return
new
SrsDvrAppendPlan
();
}
else
{
return
new
SrsDvrSessionPlan
();
srs_error
(
"invalid dvr plan=%s, vhost=%s"
,
plan
.
c_str
(),
vhost
.
c_str
());
srs_assert
(
false
);
}
}
...
...
@@ -601,6 +604,40 @@ void SrsDvrSessionPlan::on_unpublish()
dvr_enabled
=
false
;
}
SrsDvrAppendPlan
::
SrsDvrAppendPlan
()
{
}
SrsDvrAppendPlan
::~
SrsDvrAppendPlan
()
{
}
int
SrsDvrAppendPlan
::
on_publish
()
{
int
ret
=
ERROR_SUCCESS
;
// support multiple publish.
if
(
dvr_enabled
)
{
return
ret
;
}
if
(
!
_srs_config
->
get_dvr_enabled
(
req
->
vhost
))
{
return
ret
;
}
if
((
ret
=
segment
->
open
(
false
))
!=
ERROR_SUCCESS
)
{
return
ret
;
}
dvr_enabled
=
true
;
return
ret
;
}
void
SrsDvrAppendPlan
::
on_unpublish
()
{
}
SrsDvrSegmentPlan
::
SrsDvrSegmentPlan
()
{
segment_duration
=
-
1
;
...
...
trunk/src/app/srs_app_dvr.hpp
查看文件 @
7077b74
...
...
@@ -113,8 +113,9 @@ public:
/**
* open new segment file, timestamp start at 0 for fresh flv file.
* @remark ignore when already open.
* @param use_tmp_file whether use tmp file if possible.
*/
virtual
int
open
();
virtual
int
open
(
bool
use_tmp_file
=
true
);
/**
* close current segment.
* @remark ignore when already closed.
...
...
@@ -208,6 +209,19 @@ public:
};
/**
* always append to flv file, never reap it.
*/
class
SrsDvrAppendPlan
:
public
SrsDvrPlan
{
public
:
SrsDvrAppendPlan
();
virtual
~
SrsDvrAppendPlan
();
public
:
virtual
int
on_publish
();
virtual
void
on_unpublish
();
};
/**
* segment plan: reap flv when duration exceed.
*/
class
SrsDvrSegmentPlan
:
public
SrsDvrPlan
...
...
请
注册
或
登录
后发表评论