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-10-27 17:44:10 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
d1979c760f6d3e5a13644e72e999242495ea64a0
d1979c76
1 parent
3683f06e
for #512, partical hotfix the hls pure audio. 2.0.196
隐藏空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
25 行增加
和
6 行删除
README.md
trunk/src/app/srs_app_hls.cpp
trunk/src/core/srs_core.hpp
trunk/src/kernel/srs_kernel_ts.cpp
trunk/src/kernel/srs_kernel_ts.hpp
README.md
查看文件 @
d1979c7
...
...
@@ -336,6 +336,7 @@ Remark:
## History
*
v2.0, 2015-10-27, for
[
#512
][
bug #512
]
partical hotfix the hls pure audio. 2.0.196
*
<strong>
v2.0, 2015-10-08,
[
2.0 alpha2(2.0.195)
][
r2.0a2
]
released. 89358 lines.
</strong>
*
v2.0, 2015-10-04, for
[
#448
][
bug #448
]
fix the bug of response of http hooks. 2.0.195
*
v2.0, 2015-10-01, for
[
#497
][
bug #497
]
response error when client not found to kickoff. 2.0.194
...
...
trunk/src/app/srs_app_hls.cpp
查看文件 @
d1979c7
...
...
@@ -578,6 +578,7 @@ int SrsHlsMuxer::segment_open(int64_t segment_start_dts)
current
->
full_path
.
c_str
(),
tmp_file
.
c_str
());
// set the segment muxer audio codec.
// TODO: FIXME: refine code, use event instead.
if
(
acodec
!=
SrsCodecAudioReserved1
)
{
current
->
muxer
->
update_acodec
(
acodec
);
}
...
...
@@ -1044,7 +1045,7 @@ int SrsHlsCache::on_sequence_header(SrsHlsMuxer* muxer)
// when the sequence header changed, the stream is not republish.
return
muxer
->
on_sequence_header
();
}
int
SrsHlsCache
::
write_audio
(
SrsAvcAacCodec
*
codec
,
SrsHlsMuxer
*
muxer
,
int64_t
pts
,
SrsCodecSample
*
sample
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
@@ -1069,6 +1070,13 @@ int SrsHlsCache::write_audio(SrsAvcAacCodec* codec, SrsHlsMuxer* muxer, int64_t
}
}
// for pure audio, aggregate some frame to one.
if
(
muxer
->
pure_audio
()
&&
cache
->
audio
)
{
if
(
pts
-
cache
->
audio
->
start_pts
<
SRS_CONSTS_HLS_PURE_AUDIO_AGGREGATE
)
{
return
ret
;
}
}
// directly write the audio frame by frame to ts,
// it's ok for the hls overload, or maybe cause the audio corrupt,
// which introduced by aggregate the audios to a big one.
...
...
trunk/src/core/srs_core.hpp
查看文件 @
d1979c7
...
...
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// current release version
#define VERSION_MAJOR 2
#define VERSION_MINOR 0
#define VERSION_REVISION 19
5
#define VERSION_REVISION 19
6
// server info.
#define RTMP_SIG_SRS_KEY "SRS"
...
...
trunk/src/kernel/srs_kernel_ts.cpp
查看文件 @
d1979c7
...
...
@@ -459,8 +459,11 @@ int SrsTsContext::encode_pes(SrsFileWriter* writer, SrsTsMessage* msg, int16_t p
while
(
p
<
end
)
{
SrsTsPacket
*
pkt
=
NULL
;
if
(
p
==
start
)
{
//
for pure audio stream, always write pcr
.
//
write pcr according to message
.
bool
write_pcr
=
msg
->
write_pcr
;
// for pure audio, always write pcr.
// TODO: FIXME: maybe only need to write at begin and end of ts.
if
(
pure_audio
&&
msg
->
is_audio
())
{
write_pcr
=
true
;
}
...
...
@@ -2785,11 +2788,12 @@ int SrsTsCache::cache_audio(SrsAvcAacCodec* codec, int64_t dts, SrsCodecSample*
if
(
!
audio
)
{
audio
=
new
SrsTsMessage
();
audio
->
write_pcr
=
false
;
audio
->
start_pts
=
dts
;
audio
->
dts
=
audio
->
pts
=
audio
->
start_pts
=
dts
;
}
audio
->
dts
=
dts
;
audio
->
pts
=
audio
->
dts
;
// TODO: FIXME: refine code.
//audio->dts = dts;
//audio->pts = audio->dts;
audio
->
sid
=
SrsTsPESStreamIdAudioCommon
;
// must be aac or mp3
...
...
@@ -3139,6 +3143,8 @@ int SrsTsEncoder::write_audio(int64_t timestamp, char* data, int size)
return
ret
;
}
// TODO: FIXME: for pure audio, aggregate some frame to one.
// always flush audio frame by frame.
// @see https://github.com/simple-rtmp-server/srs/issues/512
return
flush_audio
();
...
...
trunk/src/kernel/srs_kernel_ts.hpp
查看文件 @
d1979c7
...
...
@@ -54,6 +54,9 @@ class SrsTsContext;
// Transport Stream packets are 188 bytes in length.
#define SRS_TS_PACKET_SIZE 188
// the aggregate pure audio for hls, in ts tbn(ms * 90).
#define SRS_CONSTS_HLS_PURE_AUDIO_AGGREGATE 720 * 90
/**
* the pid of ts packet,
* Table 2-3 - PID table, hls-mpeg-ts-iso13818-1.pdf, page 37
...
...
@@ -359,6 +362,7 @@ public:
/**
* whether the hls stream is pure audio stream.
*/
// TODO: FIXME: merge with muxer codec detect.
virtual
bool
is_pure_audio
();
/**
* when PMT table parsed, we know some info about stream.
...
...
请
注册
或
登录
后发表评论