diff --git a/trunk/src/app/srs_app_hls.cpp b/trunk/src/app/srs_app_hls.cpp index c6b1f5d72..713dc9341 100644 --- a/trunk/src/app/srs_app_hls.cpp +++ b/trunk/src/app/srs_app_hls.cpp @@ -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) { diff --git a/trunk/src/kernel/srs_kernel_codec.hpp b/trunk/src/kernel/srs_kernel_codec.hpp index e41793dcc..8608260a7 100644 --- a/trunk/src/kernel/srs_kernel_codec.hpp +++ b/trunk/src/kernel/srs_kernel_codec.hpp @@ -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 100 +#define SRS_CONF_DEFAULT_AAC_DELAY 60 // max PES packets size to flush the video. -#define SRS_AUTO_HLS_AUDIO_CACHE_SIZE 1024 * 1024 +#define SRS_AUTO_HLS_AUDIO_CACHE_SIZE 128 * 1024 /** * the FLV/RTMP supported audio sample size. diff --git a/trunk/src/kernel/srs_kernel_ts.cpp b/trunk/src/kernel/srs_kernel_ts.cpp index 3ba7f16fa..af1a75224 100644 --- a/trunk/src/kernel/srs_kernel_ts.cpp +++ b/trunk/src/kernel/srs_kernel_ts.cpp @@ -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; } diff --git a/trunk/src/kernel/srs_kernel_ts.hpp b/trunk/src/kernel/srs_kernel_ts.hpp index 4c5d325cd..62a45808e 100644 --- a/trunk/src/kernel/srs_kernel_ts.hpp +++ b/trunk/src/kernel/srs_kernel_ts.hpp @@ -60,7 +60,7 @@ public: int pid; int sid; int cc; - bool key; + bool write_pcr; SrsMpegtsFrame(); };