|
@@ -1,3 +1,12 @@
|
|
|
+import 'package:daniulive/controllers/interfaces/play_controller.dart';
|
|
|
+import 'package:daniulive/controllers/merge_play_controller.dart';
|
|
|
+import 'package:daniulive/controllers/play_controller.dart';
|
|
|
+import 'package:daniulive/controllers/publish_controller.dart';
|
|
|
+import 'package:fis_lib_media_rt/implementations/nt_rtmp/members.dart';
|
|
|
+import 'package:fis_lib_media_rt/implementations/nt_rtmp/models.dart';
|
|
|
+import 'package:fis_lib_media_rt/implementations/nt_rtmp/values.dart';
|
|
|
+import 'package:flutter/foundation.dart';
|
|
|
+
|
|
|
import '../native_share.dart';
|
|
|
import 'base.dart';
|
|
|
|
|
@@ -8,22 +17,27 @@ class NTPublishChannel extends NTBasePublishChannel {
|
|
|
|
|
|
@override
|
|
|
void setAudioMute(bool isMute) async {
|
|
|
- // await NTNativeShare.ins.setLocalMuteAudio(isMute);
|
|
|
+ await NTNativeShare.publishController?.muteAudio(isMute);
|
|
|
super.setAudioMute(isMute);
|
|
|
}
|
|
|
|
|
|
@override
|
|
|
void setVideoMute(bool isMute) async {
|
|
|
- // await NTNativeShare.ins.setLocalMuteVideo(isMute);
|
|
|
+ await NTNativeShare.publishController?.muteVideo(isMute);
|
|
|
super.setVideoMute(isMute);
|
|
|
}
|
|
|
|
|
|
@override
|
|
|
void setVolume(int volume) async {
|
|
|
- // await NTNativeShare.ins.setLocalVolume(volume);
|
|
|
+ await NTNativeShare.publishController?.setVolume(volume);
|
|
|
_volume = volume;
|
|
|
}
|
|
|
|
|
|
+ @override
|
|
|
+ void onViewIdChanged() {
|
|
|
+ updateReadyState(viewId > 0);
|
|
|
+ }
|
|
|
+
|
|
|
@override
|
|
|
int get volume => _volume;
|
|
|
}
|
|
@@ -31,43 +45,78 @@ class NTPublishChannel extends NTBasePublishChannel {
|
|
|
class NTPlayChannel extends NTBasePlayChannel {
|
|
|
int _volume = 100;
|
|
|
|
|
|
- NTPlayChannel({required super.member});
|
|
|
+ NTPlayChannel({required super.member}) {
|
|
|
+ _initMobile();
|
|
|
+ }
|
|
|
|
|
|
@override
|
|
|
int get volume => _volume;
|
|
|
|
|
|
+ IPlayController? get playController =>
|
|
|
+ NTNativeShare.playControllers.get(member.userId!);
|
|
|
+
|
|
|
@override
|
|
|
void setAudioMute(bool isMute) async {
|
|
|
- // await NTNativeShare.ins.setRemoteMuteAudio(member.userId!, isMute);
|
|
|
+ await playController?.muteAudio(isMute);
|
|
|
super.setAudioMute(isMute);
|
|
|
}
|
|
|
|
|
|
@override
|
|
|
void setVideoMute(bool isMute) async {
|
|
|
- // await NTNativeShare.ins.setRemoteMuteVideo(member.userId!, isMute);
|
|
|
+ await playController?.muteVideo(isMute);
|
|
|
super.setVideoMute(isMute);
|
|
|
}
|
|
|
|
|
|
@override
|
|
|
Future<void> play() async {
|
|
|
- // await NTNativeShare.ins.startRemote(member.userId!);
|
|
|
+ await playController?.play();
|
|
|
return super.play();
|
|
|
}
|
|
|
|
|
|
@override
|
|
|
Future<void> stop() async {
|
|
|
- // await NTNativeShare.ins.stopRemote(member.userId!);
|
|
|
+ await playController?.stop();
|
|
|
return super.stop();
|
|
|
}
|
|
|
|
|
|
@override
|
|
|
void setVolume(int volume) async {
|
|
|
- // await NTNativeShare.ins.setRemoteVolume(member.userId!, volume);
|
|
|
+ await playController?.setVolume(volume);
|
|
|
_volume = volume;
|
|
|
}
|
|
|
|
|
|
@override
|
|
|
void onViewIdChanged() {
|
|
|
- // TODO: implement onViewIdChanged
|
|
|
+ updateReadyState(viewId > 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ void _initMobile() {
|
|
|
+ final userId = member.userId!;
|
|
|
+ if (isDevice) {
|
|
|
+ _loadMobileDevice(userId);
|
|
|
+ } else {
|
|
|
+ final controller = PlayController(liveInfo.rtmpUrl, userId: userId);
|
|
|
+ NTNativeShare.playControllers.put(userId, controller);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ void _loadMobileDevice(String userId) {
|
|
|
+ DeviceRtmpLiveInfo info = liveInfo as DeviceRtmpLiveInfo;
|
|
|
+ if (info.isMerge) {
|
|
|
+ final subCount = (member as RtmpMemberInfo).deviceInfoList!.length - 1;
|
|
|
+ if (isDeviceMain) {
|
|
|
+ final controller = MergePlayController(
|
|
|
+ liveInfo.rtmpUrl,
|
|
|
+ userId: MERGE_DEVICE_NATIVE_SIGN,
|
|
|
+ mergeWidth: info.mergeWidth,
|
|
|
+ mergeHeight: info.mergeHeight,
|
|
|
+ subViewCount: subCount,
|
|
|
+ );
|
|
|
+ NTNativeShare.playControllers.put(MERGE_DEVICE_NATIVE_SIGN, controller);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ final controller = PlayController(liveInfo.rtmpUrl, userId: userId);
|
|
|
+ NTNativeShare.playControllers.put(userId, controller);
|
|
|
+ }
|
|
|
}
|
|
|
}
|