提交 0a65ab8a authored 作者: kongdywang's avatar kongdywang

fix missing interface error & update to 11.3.0

上级 cfbf7243
......@@ -122,3 +122,10 @@ Professional 分支:Android & iOS 端集成TXLiteAVSDK_Professional lastest版
- set Android TXLiteAVSDK_Player to 11.2.0.13154,tag:release_player_v11.2.0
- set iOS TXLiteAVSDK_Player to 11.2.14217, tag:release_player_v11.2.0
#### Version: 11.3.0 2023.07.07
##### 版本特性:
- set Android TXLiteAVSDK_Player to 11.3.0.13171,tag:release_player_v11.3.0
- set iOS TXLiteAVSDK_Player to 11.3.14327, tag:release_player_v11.3.0
\ No newline at end of file
......@@ -4,7 +4,7 @@ rootProject.ext {
supportSdkVersion = "26.0.1"
minSdkVersion = 19
targetSdkVersion = 28
playerVersion = '11.2.0'
playerVersion = '11.3.0'
/*
在此处可以更换需要的SDK版本,替换为专业版为 com.tencent.liteav:LiteAVSDK_Professional:latest.release
其中 latest.release 可指定为自己需要的版本号,例如 "com.tencent.liteav:LiteAVSDK_Player:9.5.29035" ,写成 latest.release 则默认使用最新版本
......
......@@ -12,6 +12,7 @@ import com.tencent.rtmp.TXLiveBase;
import com.tencent.rtmp.TXLiveConstants;
import com.tencent.rtmp.TXLivePlayConfig;
import com.tencent.rtmp.TXLivePlayer;
import com.tencent.rtmp.TXVodConstants;
import com.tencent.vod.flutter.messages.FtxMessages.BoolMsg;
import com.tencent.vod.flutter.messages.FtxMessages.BoolPlayerMsg;
import com.tencent.vod.flutter.messages.FtxMessages.DoublePlayerMsg;
......@@ -151,6 +152,9 @@ public class FTXLivePlayer extends FTXBasePlayer implements ITXLivePlayListener,
} else if (event == TXLiveConstants.PLAY_WARNING_HW_ACCELERATION_FAIL) {
mHardwareDecodeFail = true;
}
if (event != TXVodConstants.VOD_PLAY_EVT_PLAY_PROGRESS) {
Log.e(TAG, "onLivePlayEvent:" + event + "," + bundle.getString(TXLiveConstants.EVT_DESCRIPTION));
}
mEventSink.success(CommonUtil.getParams(event, bundle));
}
......@@ -253,22 +257,16 @@ public class FTXLivePlayer extends FTXBasePlayer implements ITXLivePlayListener,
}
}
@Deprecated
void setPlayerAutoPlay(boolean isAutoPlay) {
if (mLivePlayer != null) {
mLivePlayer.setAutoPlay(isAutoPlay);
}
}
@Deprecated
void seekPlayer(float progress) {
if (mLivePlayer != null) {
mLivePlayer.seek((int) progress);
}
}
@Deprecated
void setPlayerRate(float rate) {
if (mLivePlayer != null) {
mLivePlayer.setRate(rate);
}
}
void setPlayerLiveMode(int type) {
......@@ -305,17 +303,13 @@ public class FTXLivePlayer extends FTXBasePlayer implements ITXLivePlayListener,
TXLiveBase.setAppID(appId);
}
@Deprecated
private int preparePlayerLiveSeek(String domain, int bizId) {
if (mLivePlayer != null) {
return mLivePlayer.prepareLiveSeek(domain, bizId);
}
return Uninitialized;
}
@Deprecated
private int resumePlayerLive() {
if (mLivePlayer != null) {
return mLivePlayer.resumeLive();
}
return Uninitialized;
}
......@@ -350,13 +344,6 @@ public class FTXLivePlayer extends FTXBasePlayer implements ITXLivePlayListener,
return CommonUtil.boolMsgWith(r == 1);
}
@Override
public void setAutoPlay(@NonNull BoolPlayerMsg isAutoPlay) {
if (null != isAutoPlay.getValue()) {
setPlayerAutoPlay(isAutoPlay.getValue());
}
}
@NonNull
@Override
public BoolMsg stop(@NonNull BoolPlayerMsg isNeedClear) {
......@@ -407,13 +394,6 @@ public class FTXLivePlayer extends FTXBasePlayer implements ITXLivePlayListener,
return CommonUtil.intMsgWith((long) switchPlayerStream(url.getValue()));
}
@Override
public void seek(@NonNull DoublePlayerMsg progress) {
if (progress.getValue() != null) {
seekPlayer(progress.getValue().floatValue());
}
}
@Override
public void setAppID(@NonNull StringPlayerMsg appId) {
if (null != appId.getValue()) {
......@@ -421,25 +401,6 @@ public class FTXLivePlayer extends FTXBasePlayer implements ITXLivePlayListener,
}
}
@Override
public void prepareLiveSeek(@NonNull StringIntPlayerMsg playerMsg) {
preparePlayerLiveSeek(playerMsg.getStrValue(),
null != playerMsg.getIntValue() ? playerMsg.getIntValue().intValue() : 0);
}
@NonNull
@Override
public IntMsg resumeLive(@NonNull PlayerMsg playerMsg) {
return CommonUtil.intMsgWith((long) resumePlayerLive());
}
@Override
public void setRate(@NonNull DoublePlayerMsg rate) {
if (null != rate.getValue()) {
setPlayerRate(rate.getValue().floatValue());
}
}
@Override
public void setConfig(@NonNull FTXLivePlayConfigPlayerMsg config) {
setPlayerConfig(config);
......
......@@ -14,6 +14,7 @@ import com.tencent.rtmp.TXBitrateItem;
import com.tencent.rtmp.TXImageSprite;
import com.tencent.rtmp.TXLiveConstants;
import com.tencent.rtmp.TXPlayInfoParams;
import com.tencent.rtmp.TXVodConstants;
import com.tencent.rtmp.TXVodPlayConfig;
import com.tencent.rtmp.TXVodPlayer;
import com.tencent.vod.flutter.messages.FtxMessages;
......@@ -195,6 +196,9 @@ public class FTXVodPlayer extends FTXBasePlayer implements ITXVodPlayListener, F
} else if (event == TXLiveConstants.PLAY_WARNING_HW_ACCELERATION_FAIL) {
mHardwareDecodeFail = true;
}
if (event != TXVodConstants.VOD_PLAY_EVT_PLAY_PROGRESS) {
Log.e(TAG, "onPlayEvent:" + event + "," + bundle.getString(TXLiveConstants.EVT_DESCRIPTION));
}
mEventSink.success(CommonUtil.getParams(event, bundle));
}
......
......@@ -55,14 +55,6 @@ public class FTXLivePlayerDispatcher implements FtxMessages.TXFlutterLivePlayerA
return null;
}
@Override
public void setAutoPlay(@NonNull BoolPlayerMsg isAutoPlay) {
TXFlutterLivePlayerApi api = getPlayer(isAutoPlay.getPlayerId());
if (null != api) {
api.setAutoPlay(isAutoPlay);
}
}
@NonNull
@Override
public BoolMsg stop(@NonNull BoolPlayerMsg isNeedClear) {
......@@ -133,14 +125,6 @@ public class FTXLivePlayerDispatcher implements FtxMessages.TXFlutterLivePlayerA
return null;
}
@Override
public void seek(@NonNull DoublePlayerMsg progress) {
TXFlutterLivePlayerApi api = getPlayer(progress.getPlayerId());
if (null != api) {
api.seek(progress);
}
}
@Override
public void setAppID(@NonNull StringPlayerMsg appId) {
TXFlutterLivePlayerApi api = getPlayer(appId.getPlayerId());
......@@ -149,32 +133,6 @@ public class FTXLivePlayerDispatcher implements FtxMessages.TXFlutterLivePlayerA
}
}
@Override
public void prepareLiveSeek(@NonNull StringIntPlayerMsg playerMsg) {
TXFlutterLivePlayerApi api = getPlayer(playerMsg.getPlayerId());
if (null != api) {
api.prepareLiveSeek(playerMsg);
}
}
@NonNull
@Override
public IntMsg resumeLive(@NonNull PlayerMsg playerMsg) {
TXFlutterLivePlayerApi api = getPlayer(playerMsg.getPlayerId());
if (null != api) {
return api.resumeLive(playerMsg);
}
return null;
}
@Override
public void setRate(@NonNull DoublePlayerMsg rate) {
TXFlutterLivePlayerApi api = getPlayer(rate.getPlayerId());
if (null != api) {
api.setRate(rate);
}
}
@Override
public void setConfig(@NonNull FTXLivePlayConfigPlayerMsg config) {
TXFlutterLivePlayerApi api = getPlayer(config.getPlayerId());
......
......@@ -53,8 +53,7 @@ class VideoSliderViewState extends State<VideoSliderView> {
TXVodPlayerController controller = widget._controller as TXVodPlayerController;
controller.seek(_currentProgress * _videoDuration);
} else if (widget._controller is TXLivePlayerController) {
TXLivePlayerController controller = widget._controller as TXLivePlayerController;
controller.seek(_currentProgress * _videoDuration);
LogUtils.w("Slider", "live not support seek");
}
print("_currentProgress:$_currentProgress,_videoDuration:"
......
......@@ -125,13 +125,6 @@ static const int uninitialized = -1;
return [NSNumber numberWithLongLong:_textureId];
}
- (void)setIsAutoPlay:(BOOL)b
{
if (_txLivePlayer != nil) {
_txLivePlayer.isAutoPlay = b;
}
}
- (void)setRenderRotation:(int)rotation
{
if (_txLivePlayer != nil) {
......@@ -147,14 +140,6 @@ static const int uninitialized = -1;
return -1;
}
- (int)seek:(float)progress
{
if (_txLivePlayer != nil) {
return [_txLivePlayer seek:progress];
}
return uninitialized;
}
- (int)startLivePlay:(NSString *)url type:(TX_Enum_PlayType)playType
{
if (_txLivePlayer != nil) {
......@@ -237,30 +222,6 @@ static const int uninitialized = -1;
[TXLiveBase setAppID:appId];
}
- (int)prepareLiveSeek:(NSString *)domain
bizId:(NSInteger)bizId
{
if (_txLivePlayer != nil) {
return [_txLivePlayer prepareLiveSeek:domain bizId:bizId];
}
return uninitialized;
}
- (int)resumeLive {
if (_txLivePlayer != nil) {
return [_txLivePlayer resumeLive];
}
return uninitialized;
}
- (void)setRate:(float)rate {
if (_txLivePlayer != nil) {
[_txLivePlayer setRate:rate];
}
}
- (void)setRenderMode:(int)renderMode {
if (_txLivePlayer != nil) {
[_txLivePlayer setRenderMode:renderMode];
......@@ -356,6 +317,7 @@ static const int uninitialized = -1;
// default:
// break;
// }
NSLog(@"onLivePlayEvent:%i,%@", EvtID, param[EVT_PLAY_DESCRIPTION]);
}
/**
......@@ -438,11 +400,6 @@ static const int uninitialized = -1;
// FlutterMethodNotImplemented
}
- (nullable IntMsg *)resumeLivePlayerMsg:(nonnull PlayerMsg *)playerMsg error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
int r = [self resumeLive];
return [CommonUtil intMsgWith:@(r)];
}
- (void)resumePlayerMsg:(nonnull PlayerMsg *)playerMsg error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
[self resume];
}
......@@ -455,10 +412,6 @@ static const int uninitialized = -1;
[self setAppID:appId.value];
}
- (void)setAutoPlayIsAutoPlay:(nonnull BoolPlayerMsg *)isAutoPlay error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
[self setIsAutoPlay:isAutoPlay.value.boolValue];
}
- (void)setConfigConfig:(nonnull FTXLivePlayConfigPlayerMsg *)config error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
[self setPlayerConfig:config];
}
......@@ -471,10 +424,6 @@ static const int uninitialized = -1;
[self setMute:mute.value.boolValue];
}
- (void)setRateRate:(nonnull DoublePlayerMsg *)rate error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
[self setRate:rate.value.floatValue];
}
- (void)setVolumeVolume:(nonnull IntPlayerMsg *)volume error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
[self setVolume:volume.value.intValue];
}
......
......@@ -428,7 +428,7 @@ static const int CODE_ON_RECEIVE_FIRST_FRAME = 2003;
self->isVideoFirstFrameReceived = false;
});
}
NSLog(@"onPlayEvent:%i,%@", EvtID, param[EVT_PLAY_DESCRIPTION]);
[_eventSink success:[FTXVodPlayer getParamsWithEvent:EvtID withParams:param]];
}
......
......@@ -57,21 +57,6 @@
}
}
- (void)prepareLiveSeekPlayerMsg:(nonnull StringIntPlayerMsg *)playerMsg error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
id<TXFlutterLivePlayerApi> api = self.bridge.getPlayers[playerMsg.playerId];
if(api) {
[api prepareLiveSeekPlayerMsg:playerMsg error:error];
}
}
- (nullable IntMsg *)resumeLivePlayerMsg:(nonnull PlayerMsg *)playerMsg error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
id<TXFlutterLivePlayerApi> api = self.bridge.getPlayers[playerMsg.playerId];
if(api) {
return [api resumeLivePlayerMsg:playerMsg error:error];
}
return nil;
}
- (void)resumePlayerMsg:(nonnull PlayerMsg *)playerMsg error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
id<TXFlutterLivePlayerApi> api = self.bridge.getPlayers[playerMsg.playerId];
if(api) {
......@@ -79,13 +64,6 @@
}
}
- (void)seekProgress:(nonnull DoublePlayerMsg *)progress error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
id<TXFlutterLivePlayerApi> api = self.bridge.getPlayers[progress.playerId];
if(api) {
[api seekProgress:progress error:error];
}
}
- (void)setAppIDAppId:(nonnull StringPlayerMsg *)appId error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
id<TXFlutterLivePlayerApi> api = self.bridge.getPlayers[appId.playerId];
if(api) {
......@@ -93,13 +71,6 @@
}
}
- (void)setAutoPlayIsAutoPlay:(nonnull BoolPlayerMsg *)isAutoPlay error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
id<TXFlutterLivePlayerApi> api = self.bridge.getPlayers[isAutoPlay.playerId];
if(api) {
[api setAutoPlayIsAutoPlay:isAutoPlay error:error];
}
}
- (void)setConfigConfig:(nonnull FTXLivePlayConfigPlayerMsg *)config error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
id<TXFlutterLivePlayerApi> api = self.bridge.getPlayers[config.playerId];
if(api) {
......@@ -121,13 +92,6 @@
}
}
- (void)setRateRate:(nonnull DoublePlayerMsg *)rate error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
id<TXFlutterLivePlayerApi> api = self.bridge.getPlayers[rate.playerId];
if(api) {
[api setRateRate:rate error:error];
}
}
- (void)setVolumeVolume:(nonnull IntPlayerMsg *)volume error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
id<TXFlutterLivePlayerApi> api = self.bridge.getPlayers[volume.playerId];
if(api) {
......
// // Copyright (c) 2022 Tencent. All rights reserved.
// Autogenerated from Pigeon (v9.0.7), do not edit directly.
// Autogenerated from Pigeon (v9.1.2), do not edit directly.
// See also: https://pub.dev/packages/pigeon
#import <Foundation/Foundation.h>
......@@ -544,8 +544,6 @@ NSObject<FlutterMessageCodec> *TXFlutterLivePlayerApiGetCodec(void);
///
/// @return `nil` only when `error != nil`.
- (nullable BoolMsg *)startLivePlayPlayerMsg:(StringIntPlayerMsg *)playerMsg error:(FlutterError *_Nullable *_Nonnull)error;
/// 设置是否自动播放
- (void)setAutoPlayIsAutoPlay:(BoolPlayerMsg *)isAutoPlay error:(FlutterError *_Nullable *_Nonnull)error;
/// 停止播放
/// return 是否停止成功
///
......@@ -569,21 +567,8 @@ NSObject<FlutterMessageCodec> *TXFlutterLivePlayerApiGetCodec(void);
///
/// @return `nil` only when `error != nil`.
- (nullable IntMsg *)switchStreamUrl:(StringPlayerMsg *)url error:(FlutterError *_Nullable *_Nonnull)error;
/// 将视频播放进度定位到指定的进度进行播放
/// progress 要定位的视频时间,单位 秒
- (void)seekProgress:(DoublePlayerMsg *)progress error:(FlutterError *_Nullable *_Nonnull)error;
/// 设置appId
- (void)setAppIDAppId:(StringPlayerMsg *)appId error:(FlutterError *_Nullable *_Nonnull)error;
/// 时移 暂不支持
/// @param domain
/// @param bizId
- (void)prepareLiveSeekPlayerMsg:(StringIntPlayerMsg *)playerMsg error:(FlutterError *_Nullable *_Nonnull)error;
/// 停止时移播放,返回直播
///
/// @return `nil` only when `error != nil`.
- (nullable IntMsg *)resumeLivePlayerMsg:(PlayerMsg *)playerMsg error:(FlutterError *_Nullable *_Nonnull)error;
/// 设置播放速率,暂不支持
- (void)setRateRate:(DoublePlayerMsg *)rate error:(FlutterError *_Nullable *_Nonnull)error;
/// 设置播放器配置
/// config @see [FTXLivePlayConfig]
- (void)setConfigConfig:(FTXLivePlayConfigPlayerMsg *)config error:(FlutterError *_Nullable *_Nonnull)error;
......
// // Copyright (c) 2022 Tencent. All rights reserved.
// Autogenerated from Pigeon (v9.0.7), do not edit directly.
// Autogenerated from Pigeon (v9.1.2), do not edit directly.
// See also: https://pub.dev/packages/pigeon
#import "FtxMessages.h"
......@@ -2201,20 +2201,18 @@ void TXFlutterVodPlayerApiSetup(id<FlutterBinaryMessenger> binaryMessenger, NSOb
case 129:
return [BoolPlayerMsg fromList:[self readValue]];
case 130:
return [DoublePlayerMsg fromList:[self readValue]];
case 131:
return [FTXLivePlayConfigPlayerMsg fromList:[self readValue]];
case 132:
case 131:
return [IntMsg fromList:[self readValue]];
case 133:
case 132:
return [IntPlayerMsg fromList:[self readValue]];
case 134:
case 133:
return [PipParamsPlayerMsg fromList:[self readValue]];
case 135:
case 134:
return [PlayerMsg fromList:[self readValue]];
case 136:
case 135:
return [StringIntPlayerMsg fromList:[self readValue]];
case 137:
case 136:
return [StringPlayerMsg fromList:[self readValue]];
default:
return [super readValueOfType:type];
......@@ -2232,29 +2230,26 @@ void TXFlutterVodPlayerApiSetup(id<FlutterBinaryMessenger> binaryMessenger, NSOb
} else if ([value isKindOfClass:[BoolPlayerMsg class]]) {
[self writeByte:129];
[self writeValue:[value toList]];
} else if ([value isKindOfClass:[DoublePlayerMsg class]]) {
[self writeByte:130];
[self writeValue:[value toList]];
} else if ([value isKindOfClass:[FTXLivePlayConfigPlayerMsg class]]) {
[self writeByte:131];
[self writeByte:130];
[self writeValue:[value toList]];
} else if ([value isKindOfClass:[IntMsg class]]) {
[self writeByte:132];
[self writeByte:131];
[self writeValue:[value toList]];
} else if ([value isKindOfClass:[IntPlayerMsg class]]) {
[self writeByte:133];
[self writeByte:132];
[self writeValue:[value toList]];
} else if ([value isKindOfClass:[PipParamsPlayerMsg class]]) {
[self writeByte:134];
[self writeByte:133];
[self writeValue:[value toList]];
} else if ([value isKindOfClass:[PlayerMsg class]]) {
[self writeByte:135];
[self writeByte:134];
[self writeValue:[value toList]];
} else if ([value isKindOfClass:[StringIntPlayerMsg class]]) {
[self writeByte:136];
[self writeByte:135];
[self writeValue:[value toList]];
} else if ([value isKindOfClass:[StringPlayerMsg class]]) {
[self writeByte:137];
[self writeByte:136];
[self writeValue:[value toList]];
} else {
[super writeValue:value];
......@@ -2331,26 +2326,6 @@ void TXFlutterLivePlayerApiSetup(id<FlutterBinaryMessenger> binaryMessenger, NSO
[channel setMessageHandler:nil];
}
}
/// 设置是否自动播放
{
FlutterBasicMessageChannel *channel =
[[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.TXFlutterLivePlayerApi.setAutoPlay"
binaryMessenger:binaryMessenger
codec:TXFlutterLivePlayerApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(setAutoPlayIsAutoPlay:error:)], @"TXFlutterLivePlayerApi api (%@) doesn't respond to @selector(setAutoPlayIsAutoPlay:error:)", api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
BoolPlayerMsg *arg_isAutoPlay = GetNullableObjectAtIndex(args, 0);
FlutterError *error;
[api setAutoPlayIsAutoPlay:arg_isAutoPlay error:&error];
callback(wrapResult(nil, error));
}];
} else {
[channel setMessageHandler:nil];
}
}
/// 停止播放
/// return 是否停止成功
{
......@@ -2512,27 +2487,6 @@ void TXFlutterLivePlayerApiSetup(id<FlutterBinaryMessenger> binaryMessenger, NSO
[channel setMessageHandler:nil];
}
}
/// 将视频播放进度定位到指定的进度进行播放
/// progress 要定位的视频时间,单位 秒
{
FlutterBasicMessageChannel *channel =
[[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.TXFlutterLivePlayerApi.seek"
binaryMessenger:binaryMessenger
codec:TXFlutterLivePlayerApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(seekProgress:error:)], @"TXFlutterLivePlayerApi api (%@) doesn't respond to @selector(seekProgress:error:)", api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
DoublePlayerMsg *arg_progress = GetNullableObjectAtIndex(args, 0);
FlutterError *error;
[api seekProgress:arg_progress error:&error];
callback(wrapResult(nil, error));
}];
} else {
[channel setMessageHandler:nil];
}
}
/// 设置appId
{
FlutterBasicMessageChannel *channel =
......@@ -2553,68 +2507,6 @@ void TXFlutterLivePlayerApiSetup(id<FlutterBinaryMessenger> binaryMessenger, NSO
[channel setMessageHandler:nil];
}
}
/// 时移 暂不支持
/// @param domain
/// @param bizId
{
FlutterBasicMessageChannel *channel =
[[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.TXFlutterLivePlayerApi.prepareLiveSeek"
binaryMessenger:binaryMessenger
codec:TXFlutterLivePlayerApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(prepareLiveSeekPlayerMsg:error:)], @"TXFlutterLivePlayerApi api (%@) doesn't respond to @selector(prepareLiveSeekPlayerMsg:error:)", api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
StringIntPlayerMsg *arg_playerMsg = GetNullableObjectAtIndex(args, 0);
FlutterError *error;
[api prepareLiveSeekPlayerMsg:arg_playerMsg error:&error];
callback(wrapResult(nil, error));
}];
} else {
[channel setMessageHandler:nil];
}
}
/// 停止时移播放,返回直播
{
FlutterBasicMessageChannel *channel =
[[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.TXFlutterLivePlayerApi.resumeLive"
binaryMessenger:binaryMessenger
codec:TXFlutterLivePlayerApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(resumeLivePlayerMsg:error:)], @"TXFlutterLivePlayerApi api (%@) doesn't respond to @selector(resumeLivePlayerMsg:error:)", api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
PlayerMsg *arg_playerMsg = GetNullableObjectAtIndex(args, 0);
FlutterError *error;
IntMsg *output = [api resumeLivePlayerMsg:arg_playerMsg error:&error];
callback(wrapResult(output, error));
}];
} else {
[channel setMessageHandler:nil];
}
}
/// 设置播放速率,暂不支持
{
FlutterBasicMessageChannel *channel =
[[FlutterBasicMessageChannel alloc]
initWithName:@"dev.flutter.pigeon.TXFlutterLivePlayerApi.setRate"
binaryMessenger:binaryMessenger
codec:TXFlutterLivePlayerApiGetCodec()];
if (api) {
NSCAssert([api respondsToSelector:@selector(setRateRate:error:)], @"TXFlutterLivePlayerApi api (%@) doesn't respond to @selector(setRateRate:error:)", api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
DoublePlayerMsg *arg_rate = GetNullableObjectAtIndex(args, 0);
FlutterError *error;
[api setRateRate:arg_rate error:&error];
callback(wrapResult(nil, error));
}];
} else {
[channel setMessageHandler:nil];
}
}
/// 设置播放器配置
/// config @see [FTXLivePlayConfig]
{
......
......@@ -4,7 +4,7 @@
#
Pod::Spec.new do |s|
s.name = 'super_player'
s.version = '11.2.0'
s.version = '11.3.0'
s.summary = 'player plugin.'
s.description = <<-DESC
player plugin.
......
......@@ -2,5 +2,5 @@
part of SuperPlayer;
abstract class FPlayerPckInfo {
static const String PLAYER_VERSION = "11.2.0";
static const String PLAYER_VERSION = "11.3.0";
}
\ No newline at end of file
......@@ -499,10 +499,6 @@ abstract class TXFlutterLivePlayerApi {
/// (https://cloud.tencent.com/document/product/881/74588#.E8.B4.AD.E4.B9.B0.E5.B9.B6.E6.96.B0.E5.BB.BA.E6.AD.A3.E5.BC.8F.E7.89.88-license)。
BoolMsg startLivePlay(StringIntPlayerMsg playerMsg);
/// 设置是否自动播放
@deprecated
void setAutoPlay(BoolPlayerMsg isAutoPlay);
/// 停止播放
/// return 是否停止成功
BoolMsg stop(BoolPlayerMsg isNeedClear);
......@@ -528,26 +524,9 @@ abstract class TXFlutterLivePlayerApi {
/// 切换播放流
IntMsg switchStream(StringPlayerMsg url);
/// 将视频播放进度定位到指定的进度进行播放
/// progress 要定位的视频时间,单位 秒
void seek(DoublePlayerMsg progress);
/// 设置appId
void setAppID(StringPlayerMsg appId);
/// 时移 暂不支持
/// @param domain
/// @param bizId
@deprecated
void prepareLiveSeek(StringIntPlayerMsg playerMsg);
/// 停止时移播放,返回直播
IntMsg resumeLive(PlayerMsg playerMsg);
/// 设置播放速率,暂不支持
@deprecated
void setRate(DoublePlayerMsg rate);
/// 设置播放器配置
/// config @see [FTXLivePlayConfig]
void setConfig(FTXLivePlayConfigPlayerMsg config);
......
......@@ -172,22 +172,6 @@ class TXLivePlayerController extends ChangeNotifier implements ValueListenable<T
_state = TXPlayerState.paused;
}
/// 设置是否自动播放
@deprecated
Future<void> setIsAutoPlay({bool? isAutoPlay}) async {
await setAutoPlay(isAutoPlay: isAutoPlay);
}
/// 设置是否自动播放
@override
Future<void> setAutoPlay({bool? isAutoPlay}) async {
if (_isNeedDisposed) return;
await _initPlayer.future;
await _livePlayerApi.setAutoPlay(BoolPlayerMsg()
..value = isAutoPlay ?? false
..playerId = _playerId);
}
/// 停止播放
/// return 是否停止成功
@override
......@@ -264,17 +248,6 @@ class TXLivePlayerController extends ChangeNotifier implements ValueListenable<T
return intMsg.value ?? -1;
}
/// 将视频播放进度定位到指定的进度进行播放
/// progress 要定位的视频时间,单位 秒
@override
Future<void> seek(double progress) async {
if (_isNeedDisposed) return;
await _initPlayer.future;
await _livePlayerApi.seek(DoublePlayerMsg()
..value = progress
..playerId = _playerId);
}
/// 设置appId
Future<void> setAppID(int appId) async {
if (_isNeedDisposed) return;
......@@ -284,36 +257,6 @@ class TXLivePlayerController extends ChangeNotifier implements ValueListenable<T
..playerId = _playerId);
}
/// 时移 暂不支持
@deprecated
Future<void> prepareLiveSeek(String domain, int bizId) async {
if (_isNeedDisposed) return;
await _initPlayer.future;
await _livePlayerApi.prepareLiveSeek(StringIntPlayerMsg()
..strValue = domain
..intValue = bizId
..playerId = _playerId);
}
/// 停止时移播放,返回直播
Future<int> resumeLive() async {
if (_isNeedDisposed) return 0;
await _initPlayer.future;
IntMsg intMsg = await _livePlayerApi.resumeLive(PlayerMsg()..playerId = _playerId);
return intMsg.value ?? 0;
}
/// 设置播放速率,暂不支持
@deprecated
@override
Future<void> setRate(double rate) async {
if (_isNeedDisposed) return;
await _initPlayer.future;
await _livePlayerApi.setRate(DoublePlayerMsg()
..value = rate
..playerId = _playerId);
}
/// 设置播放器配置
/// config @see [FTXLivePlayConfig]
Future<void> setConfig(FTXLivePlayConfig config) async {
......
......@@ -12,14 +12,11 @@ abstract class TXPlayerController {
TXPlayerValue? playerValue();
Future<void> initialize({bool? onlyAudio});
Future<void> setAutoPlay({bool? isAutoPlay});
Future<bool> stop({bool isNeedClear = false});
Future<bool> isPlaying();
Future<void> pause();
Future<void> resume();
Future<void> setMute(bool mute);
Future<void> seek(double progress);
Future<void> setRate(double rate);
Future<bool> enableHardwareDecode(bool enable);
Future<int> enterPictureInPictureMode(
{String? backIconForAndroid, String? playIconForAndroid, String? pauseIconForAndroid, String? forwardIconForAndroid});
......
// Copyright (c) 2022 Tencent. All rights reserved.
part of SuperPlayer;
// Autogenerated from Pigeon (v9.1.2), do not edit directly.
// See also: https://pub.dev/packages/pigeon
// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import
/// pigeon原始原件,由此文件生成messages原生通信代码
/// 生成命令如下,使用生成命令的时候,需要实现注释掉以上两个import导入
......@@ -2411,29 +2413,26 @@ class _TXFlutterLivePlayerApiCodec extends StandardMessageCodec {
} else if (value is BoolPlayerMsg) {
buffer.putUint8(129);
writeValue(buffer, value.encode());
} else if (value is DoublePlayerMsg) {
buffer.putUint8(130);
writeValue(buffer, value.encode());
} else if (value is FTXLivePlayConfigPlayerMsg) {
buffer.putUint8(131);
buffer.putUint8(130);
writeValue(buffer, value.encode());
} else if (value is IntMsg) {
buffer.putUint8(132);
buffer.putUint8(131);
writeValue(buffer, value.encode());
} else if (value is IntPlayerMsg) {
buffer.putUint8(133);
buffer.putUint8(132);
writeValue(buffer, value.encode());
} else if (value is PipParamsPlayerMsg) {
buffer.putUint8(134);
buffer.putUint8(133);
writeValue(buffer, value.encode());
} else if (value is PlayerMsg) {
buffer.putUint8(135);
buffer.putUint8(134);
writeValue(buffer, value.encode());
} else if (value is StringIntPlayerMsg) {
buffer.putUint8(136);
buffer.putUint8(135);
writeValue(buffer, value.encode());
} else if (value is StringPlayerMsg) {
buffer.putUint8(137);
buffer.putUint8(136);
writeValue(buffer, value.encode());
} else {
super.writeValue(buffer, value);
......@@ -2448,20 +2447,18 @@ class _TXFlutterLivePlayerApiCodec extends StandardMessageCodec {
case 129:
return BoolPlayerMsg.decode(readValue(buffer)!);
case 130:
return DoublePlayerMsg.decode(readValue(buffer)!);
case 131:
return FTXLivePlayConfigPlayerMsg.decode(readValue(buffer)!);
case 132:
case 131:
return IntMsg.decode(readValue(buffer)!);
case 133:
case 132:
return IntPlayerMsg.decode(readValue(buffer)!);
case 134:
case 133:
return PipParamsPlayerMsg.decode(readValue(buffer)!);
case 135:
case 134:
return PlayerMsg.decode(readValue(buffer)!);
case 136:
case 135:
return StringIntPlayerMsg.decode(readValue(buffer)!);
case 137:
case 136:
return StringPlayerMsg.decode(readValue(buffer)!);
default:
return super.readValueOfType(type, buffer);
......@@ -2542,29 +2539,6 @@ class TXFlutterLivePlayerApi {
}
}
/// 设置是否自动播放
Future<void> setAutoPlay(BoolPlayerMsg arg_isAutoPlay) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.TXFlutterLivePlayerApi.setAutoPlay', codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_isAutoPlay]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else {
return;
}
}
/// 停止播放
/// return 是否停止成功
Future<BoolMsg> stop(BoolPlayerMsg arg_isNeedClear) async {
......@@ -2765,30 +2739,6 @@ class TXFlutterLivePlayerApi {
}
}
/// 将视频播放进度定位到指定的进度进行播放
/// progress 要定位的视频时间,单位 秒
Future<void> seek(DoublePlayerMsg arg_progress) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.TXFlutterLivePlayerApi.seek', codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_progress]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else {
return;
}
}
/// 设置appId
Future<void> setAppID(StringPlayerMsg arg_appId) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
......@@ -2812,82 +2762,6 @@ class TXFlutterLivePlayerApi {
}
}
/// 时移 暂不支持
/// @param domain
/// @param bizId
Future<void> prepareLiveSeek(StringIntPlayerMsg arg_playerMsg) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.TXFlutterLivePlayerApi.prepareLiveSeek', codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_playerMsg]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else {
return;
}
}
/// 停止时移播放,返回直播
Future<IntMsg> resumeLive(PlayerMsg arg_playerMsg) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.TXFlutterLivePlayerApi.resumeLive', codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_playerMsg]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else if (replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (replyList[0] as IntMsg?)!;
}
}
/// 设置播放速率,暂不支持
Future<void> setRate(DoublePlayerMsg arg_rate) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.TXFlutterLivePlayerApi.setRate', codec,
binaryMessenger: _binaryMessenger);
final List<Object?>? replyList =
await channel.send(<Object?>[arg_rate]) as List<Object?>?;
if (replyList == null) {
throw PlatformException(
code: 'channel-error',
message: 'Unable to establish connection on channel.',
);
} else if (replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
);
} else {
return;
}
}
/// 设置播放器配置
/// config @see [FTXLivePlayConfig]
Future<void> setConfig(FTXLivePlayConfigPlayerMsg arg_config) async {
......
......@@ -201,7 +201,6 @@ class TXVodPlayerController extends ChangeNotifier implements ValueListenable<TX
}
/// 设置是否自动播放
@override
Future<void> setAutoPlay({bool? isAutoPlay}) async {
if (_isNeedDisposed) return;
await _initPlayer.future;
......@@ -269,7 +268,6 @@ class TXVodPlayerController extends ChangeNotifier implements ValueListenable<TX
/// 将视频播放进度定位到指定的进度进行播放
/// progress 要定位的视频时间,单位 秒
@override
Future<void> seek(double progress) async {
if (_isNeedDisposed) return;
await _initPlayer.future;
......@@ -279,7 +277,6 @@ class TXVodPlayerController extends ChangeNotifier implements ValueListenable<TX
}
/// 设置播放速率,默认速率 1
@override
Future<void> setRate(double rate) async {
if (_isNeedDisposed) return;
await _initPlayer.future;
......
name: super_player
description: player plugin.
version: 11.2.0
version: 11.3.0
author:
homepage:
......
......@@ -201,7 +201,6 @@ class SuperPlayerController {
case TXVodPlayEvent.PLAY_ERR_NET_DISCONNECT:
case TXVodPlayEvent.PLAY_EVT_PLAY_END:
if (playerType == SuperPlayerType.LIVE_SHIFT) {
_livePlayerController.resumeLive();
_observer?.onError(SuperPlayerCode.LIVE_SHIFT_FAIL, "时移失败,返回直播");
_updatePlayerState(SuperPlayerState.PLAYING);
} else {
......@@ -712,12 +711,7 @@ class SuperPlayerController {
}
} else {
_updatePlayerType(SuperPlayerType.LIVE_SHIFT);
_livePlayerController.seek(progress);
bool isPlaying = await _livePlayerController.isPlaying();
// resume when not playing.if isPlaying is null,not resume
if (!isPlaying) {
resume();
}
LogUtils.w(TAG, "live not support seek");
}
_observer?.onSeek(progress);
}
......
name: superplayer_widget
description: superplayer,base on vodplayer
version: "11.2.0"
version: "11.3.0"
environment:
sdk: '>=2.17.0 <4.0.0'
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论