mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-07-06 03:28:09 +08:00
mk_player api 增加seek和获取进度以相对开始时间的接口以适应按时间轴方式回放的需求
This commit is contained in:
@@ -52,7 +52,10 @@ void Stamp::revise(int64_t dts, int64_t pts, int64_t &dts_out, int64_t &pts_out,
|
||||
//这是点播
|
||||
dts_out = dts;
|
||||
pts_out = pts;
|
||||
_relativeStamp = dts_out;
|
||||
_last_dts = dts;
|
||||
if (_dts_base == -1)
|
||||
_dts_base = dts;
|
||||
_relativeStamp = _npt_base + dts - _dts_base;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -84,6 +87,8 @@ void Stamp::revise(int64_t dts, int64_t pts, int64_t &dts_out, int64_t &pts_out,
|
||||
}
|
||||
|
||||
void Stamp::setRelativeStamp(int64_t relativeStamp) {
|
||||
_dts_base = _last_dts;
|
||||
_npt_base = relativeStamp;
|
||||
_relativeStamp = relativeStamp;
|
||||
}
|
||||
|
||||
|
||||
@@ -71,6 +71,9 @@ private:
|
||||
int64_t _last_dts = -1;
|
||||
SmoothTicker _ticker;
|
||||
bool _playback = false;
|
||||
|
||||
int64_t _dts_base = 0;
|
||||
int64_t _npt_base = 0;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -93,12 +93,24 @@ public:
|
||||
*/
|
||||
virtual float getProgress() const { return 0;}
|
||||
|
||||
/**
|
||||
* 获取播放进度pos,取值 相对开始时间增量 单位秒
|
||||
* @return
|
||||
*/
|
||||
virtual uint32_t getProgressPos() const { return 0; }
|
||||
|
||||
/**
|
||||
* 拖动进度条
|
||||
* @param fProgress 进度,取值 0.0 ~ 1.0
|
||||
*/
|
||||
virtual void seekTo(float fProgress) {}
|
||||
|
||||
/**
|
||||
* 拖动进度条
|
||||
* @param seekPos 进度,取值 相对于开始时间的增量 单位秒
|
||||
*/
|
||||
virtual void seekTo(uint32_t seekPos) {}
|
||||
|
||||
/**
|
||||
* 设置一个MediaSource,直接生产rtsp/rtmp代理
|
||||
* @param src
|
||||
@@ -174,6 +186,12 @@ public:
|
||||
}
|
||||
return Parent::getProgress();
|
||||
}
|
||||
uint32_t getProgressPos() const override {
|
||||
if (_delegate) {
|
||||
return _delegate->getProgressPos();
|
||||
}
|
||||
return Parent::getProgressPos();
|
||||
}
|
||||
void seekTo(float fProgress) override{
|
||||
if (_delegate) {
|
||||
return _delegate->seekTo(fProgress);
|
||||
@@ -181,6 +199,13 @@ public:
|
||||
return Parent::seekTo(fProgress);
|
||||
}
|
||||
|
||||
void seekTo(uint32_t seekPos) override {
|
||||
if (_delegate) {
|
||||
return _delegate->seekTo(seekPos);
|
||||
}
|
||||
return Parent::seekTo(seekPos);
|
||||
}
|
||||
|
||||
void setMediaSouce(const MediaSource::Ptr & src) override {
|
||||
if (_delegate) {
|
||||
_delegate->setMediaSouce(src);
|
||||
|
||||
Reference in New Issue
Block a user