增加长期保存hls切片的功能,segKeep=0为不长期保存,segKeep=1为长期保存。此功能部分等效于segNum=0的情况,不同的是这个保留不会在m3u8文件中体现。

This commit is contained in:
WuPeng
2022-05-10 17:32:50 +08:00
parent a9d7874467
commit 5bc313bafe
8 changed files with 34 additions and 7 deletions

View File

@@ -14,10 +14,11 @@ using namespace std;
namespace mediakit {
HlsMaker::HlsMaker(float seg_duration, uint32_t seg_number) {
HlsMaker::HlsMaker(float seg_duration, uint32_t seg_number, bool seg_keep) {
//最小允许设置为00个切片代表点播
_seg_number = seg_number;
_seg_duration = seg_duration;
_seg_keep = seg_keep;
}
HlsMaker::~HlsMaker() {
@@ -105,7 +106,10 @@ void HlsMaker::delOldSegment() {
if (_file_index > _seg_number) {
_seg_dur_list.pop_front();
}
//如果设置为一直保存,就不删除
if (_seg_keep) {
return;
}
GET_CONFIG(uint32_t, segRetain, Hls::kSegmentRetain);
//但是实际保存的切片个数比m3u8所述多若干个,这样做的目的是防止播放器在切片删除前能下载完毕
if (_file_index > _seg_number + segRetain) {
@@ -149,6 +153,10 @@ bool HlsMaker::isLive() {
return _seg_number != 0;
}
bool HlsMaker::isKeep() {
return _seg_keep;
}
void HlsMaker::clear() {
_file_index = 0;
_last_timestamp = 0;