mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-06-30 06:42:22 +08:00
hls播放器优化 (#3064)
1. 连续切片下载失败后关闭播放器, 这种适用于源端服务器出现故障导致m3u8索引正常,但切片文件不正常时,尽快的能关闭播放器并通过web hook上报业务系统,而不是仍旧不停的拉取ts切片. 2. 优化m3u8拉取失败时的快速重拉, 增加一个0.3秒的延时. 因为有时候httpClient已经_complete=true了, 但是alive()仍旧是true,所以稍微增加一个延时, 避免出现大量的m3u8重试, 实际上这里能否直接判断_complete=true? 3. 继续修改到哪里就把代码注释添加英文版本
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
#define MIN_TIMEOUT_MULTIPLE 2
|
||||
#define MAX_TIMEOUT_MULTIPLE 5
|
||||
#define MAX_TRY_FETCH_INDEX_TIMES 5
|
||||
#define MAX_TS_DOWNLOAD_FAILED_COUNT 10
|
||||
|
||||
namespace mediakit {
|
||||
|
||||
@@ -56,19 +57,22 @@ public:
|
||||
|
||||
/**
|
||||
* 开始播放
|
||||
* start play
|
||||
*/
|
||||
void play(const std::string &url) override;
|
||||
|
||||
/**
|
||||
* 停止播放
|
||||
* stop play
|
||||
*/
|
||||
void teardown() override;
|
||||
|
||||
protected:
|
||||
/**
|
||||
* 收到ts包
|
||||
* @param data ts数据负载
|
||||
* @param len ts包长度
|
||||
* Received ts package
|
||||
* @param data ts数据负载 ts data payload
|
||||
* @param len ts包长度 ts package length
|
||||
*/
|
||||
virtual void onPacket(const char *data, size_t len) = 0;
|
||||
|
||||
@@ -80,7 +84,7 @@ private:
|
||||
bool onRedirectUrl(const std::string &url, bool temporary) override;
|
||||
|
||||
private:
|
||||
void playDelay();
|
||||
void playDelay(float delay_sec = 0);
|
||||
float delaySecond();
|
||||
void fetchSegment();
|
||||
void teardown_l(const toolkit::SockException &ex);
|
||||
@@ -88,7 +92,8 @@ private:
|
||||
|
||||
private:
|
||||
struct UrlComp {
|
||||
//url忽略?后面的参数
|
||||
// url忽略?后面的参数
|
||||
// Ignore the parameters after the url?
|
||||
bool operator()(const std::string& __x, const std::string& __y) const {
|
||||
return toolkit::split(__x,"?")[0] < toolkit::split(__y,"?")[0];
|
||||
}
|
||||
@@ -108,6 +113,7 @@ private:
|
||||
HttpTSPlayer::Ptr _http_ts_player;
|
||||
int _timeout_multiple = MIN_TIMEOUT_MULTIPLE;
|
||||
int _try_fetch_index_times = 0;
|
||||
int _ts_download_failed_count = 0;
|
||||
};
|
||||
|
||||
class HlsPlayerImp : public PlayerImp<HlsPlayer, PlayerBase>, private TrackListener {
|
||||
|
||||
Reference in New Issue
Block a user