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-10 19:09:31 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
5a3cd235fdeabedf2807cf28eeaf496e68740865
5a3cd235
1 parent
828aadf8
refine hls, try to fix the hls ts corrupt problem.
隐藏空白字符变更
内嵌
并排对比
正在显示
4 个修改的文件
包含
8 行增加
和
7 行删除
trunk/src/app/srs_app_hls.cpp
trunk/src/kernel/srs_kernel_codec.hpp
trunk/src/kernel/srs_kernel_ts.cpp
trunk/src/kernel/srs_kernel_ts.hpp
trunk/src/app/srs_app_hls.cpp
查看文件 @
5a3cd23
...
...
@@ -758,7 +758,7 @@ int SrsHlsCache::write_video(SrsAvcAacCodec* codec, SrsHlsMuxer* muxer, int64_t
// new segment when:
// 1. base on gop.
// 2. some gops duration overflow.
if
(
cache
->
vf
->
key
&&
muxer
->
is_segment_overflow
())
{
if
(
sample
->
frame_type
==
SrsCodecVideoAVCFrameKeyFrame
&&
muxer
->
is_segment_overflow
())
{
if
((
ret
=
reap_segment
(
"video"
,
muxer
,
cache
->
vf
->
dts
))
!=
ERROR_SUCCESS
)
{
return
ret
;
}
...
...
@@ -788,6 +788,7 @@ int SrsHlsCache::reap_segment(string log_desc, SrsHlsMuxer* muxer, int64_t segme
}
// TODO: flush audio before or after segment?
// TODO: fresh segment begin with audio or video?
// segment open, flush video first.
if
((
ret
=
muxer
->
flush_video
(
cache
->
af
,
cache
->
ab
,
cache
->
vf
,
cache
->
vb
))
!=
ERROR_SUCCESS
)
{
...
...
trunk/src/kernel/srs_kernel_codec.hpp
查看文件 @
5a3cd23
...
...
@@ -233,10 +233,10 @@ extern int aac_sample_rates[];
#define __SRS_AAC_SAMPLE_RATE_UNSET 15
// in ms, for HLS aac flush the audio
#define SRS_CONF_DEFAULT_AAC_DELAY
10
0
#define SRS_CONF_DEFAULT_AAC_DELAY
6
0
// max PES packets size to flush the video.
#define SRS_AUTO_HLS_AUDIO_CACHE_SIZE 1
024
* 1024
#define SRS_AUTO_HLS_AUDIO_CACHE_SIZE 1
28
* 1024
/**
* the FLV/RTMP supported audio sample size.
...
...
trunk/src/kernel/srs_kernel_ts.cpp
查看文件 @
5a3cd23
...
...
@@ -224,7 +224,7 @@ public:
if
(
first
)
{
first
=
false
;
if
(
frame
->
key
)
{
if
(
frame
->
write_pcr
)
{
p
[
-
1
]
|=
0x20
;
// Both Adaption and Payload
*
p
++
=
7
;
// size
*
p
++
=
0x50
;
// random access + PCR
...
...
@@ -399,7 +399,7 @@ SrsMpegtsFrame::SrsMpegtsFrame()
{
pts
=
dts
=
0
;
pid
=
sid
=
cc
=
0
;
key
=
false
;
write_pcr
=
false
;
}
string
srs_ts_stream2string
(
SrsTsStream
stream
)
...
...
@@ -1971,7 +1971,7 @@ int SrsTsCache::cache_video(SrsAvcAacCodec* codec, int64_t dts, SrsCodecSample*
vf
->
pts
=
vf
->
dts
+
sample
->
cts
*
90
;
vf
->
pid
=
TS_VIDEO_PID
;
vf
->
sid
=
TS_VIDEO_AVC
;
vf
->
key
=
sample
->
frame_type
==
SrsCodecVideoAVCFrameKeyFrame
;
vf
->
write_pcr
=
sample
->
frame_type
==
SrsCodecVideoAVCFrameKeyFrame
;
return
ret
;
}
...
...
trunk/src/kernel/srs_kernel_ts.hpp
查看文件 @
5a3cd23
...
...
@@ -60,7 +60,7 @@ public:
int
pid
;
int
sid
;
int
cc
;
bool
key
;
bool
write_pcr
;
SrsMpegtsFrame
();
};
...
...
请
注册
或
登录
后发表评论