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
胡斌
2017-02-25 23:41:24 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
27ea2650019911852ff167647944e5bf8410f1d2
27ea2650
1 parent
c749efc9
add #EXT-X-ENDLIST" when drop segment for unpublish
显示空白字符变更
内嵌
并排对比
正在显示
1 个修改的文件
包含
25 行增加
和
0 行删除
trunk/src/app/srs_app_hls.cpp
trunk/src/app/srs_app_hls.cpp
查看文件 @
27ea265
...
...
@@ -814,6 +814,7 @@ int SrsHlsMuxer::segment_close(string log_desc)
if
(
currentSeg
->
is_sequence_header
)
{
if
(
m3u8_total_endlist_saved
){
erase_last_endlist
=
true
;
m3u8_total_endlist_saved
=
false
;
}
if
(
currentSeg
->
sequence_no
!=
0
)
{
// #EXT-X-DISCONTINUITY\n
...
...
@@ -833,6 +834,7 @@ int SrsHlsMuxer::segment_close(string log_desc)
ss
<<
currentSeg
->
uri
<<
SRS_CONSTS_LF
;
srs_verbose
(
"write m3u8 segment uri success."
);
srs_trace
(
"---log_desc:%s"
,
log_desc
.
c_str
());
if
(
log_desc
==
"unpublish"
){
ss
<<
"#EXT-X-ENDLIST"
<<
SRS_CONSTS_LF
;
m3u8_total_endlist_saved
=
true
;
...
...
@@ -886,6 +888,29 @@ int SrsHlsMuxer::segment_close(string log_desc)
// reuse current segment index.
_sequence_no
--
;
//write #EXT-X-ENDLIST" when unpublish and drop segment
if
(
save_m3u8_total
&&
!
m3u8_total_endlist_saved
&&
log_desc
==
"unpublish"
){
SrsFileWriter
total_m3u8_writer
;
ret
=
total_m3u8_writer
.
open_write
(
total_m3u8
);
if
(
ret
!=
ERROR_SUCCESS
)
{
srs_error
(
"open total file %s error when drop segment:%s reap ts segment, sequence_no=%d, uri=%s, duration=%.2f, start=%"
PRId64
,
total_m3u8
.
c_str
(),
log_desc
.
c_str
(),
current
->
sequence_no
,
current
->
uri
.
c_str
(),
current
->
duration
,
current
->
segment_start_dts
);
return
ret
;
}
std
::
stringstream
ss
;
ss
<<
"#EXT-X-ENDLIST"
<<
SRS_CONSTS_LF
;
m3u8_total_endlist_saved
=
true
;
std
::
string
m3u8
=
ss
.
str
();
if
((
ret
=
total_m3u8_writer
.
write
((
char
*
)
m3u8
.
c_str
(),
(
int
)
m3u8
.
length
(),
NULL
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"write m3u8 failed. ret=%d"
,
ret
);
return
ret
;
}
}
srs_trace
(
"%s drop ts segment, sequence_no=%d, uri=%s, duration=%.2f, start=%"
PRId64
""
,
log_desc
.
c_str
(),
current
->
sequence_no
,
current
->
uri
.
c_str
(),
current
->
duration
,
current
->
segment_start_dts
);
...
...
请
注册
或
登录
后发表评论