Merge remote-tracking branch 'patton99/master' into iOS

# Conflicts:
#	ios/Runner.xcodeproj/project.pbxproj
#	lib/widget/my_superplayer.dart
#	pubspec.yaml
This commit is contained in:
2025-05-27 11:54:36 +08:00
38 changed files with 2689 additions and 127 deletions
@@ -103,7 +103,7 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
case TXLiveConstants.PLAY_ERR_NET_DISCONNECT:
case TXLiveConstants.PLAY_EVT_PLAY_END:
if (mCurrentPlayType == SuperPlayerDef.PlayerType.LIVE_SHIFT) { // 直播时移失败,返回直播
mLivePlayer.resumeLive();
// mLivePlayer.resumeLive();
updatePlayerType(SuperPlayerDef.PlayerType.LIVE);
onError(SuperPlayerCode.LIVE_SHIFT_FAIL, "时移失败,返回直播");
updatePlayerState(SuperPlayerDef.PlayerState.PLAYING);
@@ -398,7 +398,10 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
mCurrentPlayVideoURL = url;
if (mLivePlayer != null) {
mLivePlayer.setPlayListener(this);
int result = mLivePlayer.startPlay(url, playType); // result返回值:0 success; -1 empty url; -2 invalid url; -3 invalid playType;
// 由于腾讯播放器SDK在2022-10-11进行更新,导致hyzp_ybqx项目编译出现下面报错。将下面文件
//\hyzp_ybqx\lib\my_flutter_superplayer\android\src\main\java\com\tencent\liteav\demo\superplayer\model\SuperPlayerImpl.java
//中的TXLivePlayer 的 startPlay 变更为 startLivePlay,将TXVodPlayer 的 startPlay 变更为 startVodPlay,问题解决。
int result = mLivePlayer.startLivePlay(url, playType); // result返回值:0 success; -1 empty url; -2 invalid url; -3 invalid playType;
if (result != 0) {
TXCLog.e(TAG, "playLiveURL videoURL:" + url + ",result:" + result);
} else {
@@ -449,9 +452,9 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
query += "spfileid=" + mFileId + "&spdrmtype=" + drmType + "&spappid=" + mAppId;
Uri newUri = uri.buildUpon().query(query).build();
TXCLog.i(TAG, "playVodURL: newurl = " + Uri.decode(newUri.toString()) + " ;url= " + url);
ret = mVodPlayer.startPlay(Uri.decode(newUri.toString()));
ret = mVodPlayer.startVodPlay(Uri.decode(newUri.toString()));
} else {
ret = mVodPlayer.startPlay(url);
ret = mVodPlayer.startVodPlay(url);
}
if (ret == 0) {
@@ -498,7 +501,7 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
e.printStackTrace();
TXCLog.e(TAG, "playTimeShiftLiveURL: bizidNum error = " + bizid);
}
mLivePlayer.prepareLiveSeek(domian, bizidNum);
// mLivePlayer.prepareLiveSeek(domian, bizidNum);
}
/**
@@ -730,7 +733,7 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
@Override
public void resumeLive() {
if (mCurrentPlayType == SuperPlayerDef.PlayerType.LIVE_SHIFT) {
mLivePlayer.resumeLive();
// mLivePlayer.resumeLive();
}
updatePlayerType(SuperPlayerDef.PlayerType.LIVE);
}
@@ -805,7 +808,7 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
updatePlayerType(SuperPlayerDef.PlayerType.LIVE_SHIFT);
LogReport.getInstance().uploadLogs(LogReport.ELK_ACTION_TIMESHIFT, 0, 0);
if (mLivePlayer != null) {
mLivePlayer.seek(position);
// mLivePlayer.seek(position);
}
}
if (mObserver != null) {
@@ -856,7 +859,7 @@ public class SuperPlayerImpl implements SuperPlayer, ITXVodPlayListener, ITXLive
mVodPlayer.stopPlay(true);
TXCLog.i(TAG, "onQualitySelect quality.url:" + quality.url);
mVodPlayer.setStartTime(currentTime);
mVodPlayer.startPlay(quality.url);
mVodPlayer.startVodPlay(quality.url);
} else { //br!=0;index!=-1;url=null
TXCLog.i(TAG, "setBitrateIndex quality.index:" + quality.index);
// 说明是多bitrate的m3u8子流,会自动无缝seek