Skip to content

Commit

Permalink
Merge pull request #45 from ant-media/addMultitrackConferenceSupport
Browse files Browse the repository at this point in the history
Refactor sdk to make it compatible with multitrack
  • Loading branch information
burak-58 committed Mar 18, 2024
2 parents d1eedbf + a673f73 commit 230e566
Show file tree
Hide file tree
Showing 76 changed files with 1,876 additions and 637 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 1.3.0
- **ENHAN**: Add multitrack conference solution.
- **NOTE**: Minimum compatible Ant Media Server version is 2.8.0

## 1.2.1
- **FIX**: Make samples compatible with web and fix push notification type error.

Expand Down
59 changes: 45 additions & 14 deletions example/Conference/lib/conference.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// ignore_for_file: must_be_immutable, implementation_imports

import 'dart:convert';
import 'dart:core';

import 'package:ant_media_flutter/ant_media_flutter.dart';
Expand Down Expand Up @@ -103,25 +104,51 @@ class _ConferenceState extends State<Conference> {
// onDataChannel
(dc) {},
(dc, message, isReceived) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(
(isReceived ? "Received:" : "Sent:") + " " + message.text,
style: const TextStyle(color: Colors.white),
),
backgroundColor: Colors.blue,
));
try {
JsonDecoder decoder = const JsonDecoder();
Map<String, dynamic> map = decoder.convert(message.text);
if (map['eventType'] != "UPDATE_AUDIO_LEVEL") {
print("DataChannelMessage: $map");
}
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(
"${isReceived ? "Received:" : "Sent:"} ${message.text}",
style: const TextStyle(color: Colors.white),
),
backgroundColor: Colors.blue,
));
}
},

//onUpdateConferenceUser
(streams) {
(streams) async {
print("onUpdateConferenceUser: ${streams.length}");
List<Widget> widgetlist = [];
for (final stream in streams) {
Map<String, MediaStream> mediaStreams = {};
for (final track in streams[(streams.length) - 1].getTracks()) {
var incomingTrackID = track.id?.substring("ARDAMSx".length);
if (incomingTrackID == widget.roomId ||
incomingTrackID == widget.id) {
continue;
}
print("incomingTrackID: $incomingTrackID");
if (mediaStreams.containsKey(incomingTrackID)) {
mediaStreams[incomingTrackID]?.addTrack(track);
} else {
MediaStream newStream =
await createLocalMediaStream(incomingTrackID!);
newStream.addTrack(track);
mediaStreams[incomingTrackID] = newStream;
}
}

for (MapEntry<String, MediaStream> mediaStream
in mediaStreams.entries) {
SizedBox widget = SizedBox(
child: PlayWidget(
ip: this.widget.ip,
id: stream,
roomId: this.widget.roomId,
userscreen: false),
roomMediaStream: mediaStream.value,
roomId: this.widget.roomId),
);
widgetlist.add(widget);
}
Expand All @@ -136,7 +163,11 @@ class _ConferenceState extends State<Conference> {
setState(() {});
}),
widget.iceServers,
(command, mapData) {});
(command, mapData) {
print("Inside conference.dart");
print("Command: $command");
print("Data: $mapData");
});
}

_hangUp() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,13 @@

#include "generated_plugin_registrant.h"

#include <ant_media_flutter/ant_media_flutter.h>
#include <flutter_webrtc/flutter_web_r_t_c_plugin.h>

void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) ant_media_flutter_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "AntMediaFlutter");
ant_media_flutter_register_with_registrar(ant_media_flutter_registrar);
g_autoptr(FlPluginRegistrar) flutter_webrtc_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterWebRTCPlugin");
flutter_web_r_t_c_plugin_register_with_registrar(flutter_webrtc_registrar);
Expand Down
1 change: 1 addition & 0 deletions example/Conference/linux/flutter/generated_plugins.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#

list(APPEND FLUTTER_PLUGIN_LIST
ant_media_flutter
flutter_webrtc
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@
import FlutterMacOS
import Foundation

import ant_media_flutter
import flutter_webrtc
import path_provider_foundation
import path_provider_macos
import shared_preferences_foundation
import shared_preferences_macos

func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AntMediaFlutter.register(with: registry.registrar(forPlugin: "AntMediaFlutter"))
FlutterWebRTCPlugin.register(with: registry.registrar(forPlugin: "FlutterWebRTCPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
}
Loading

0 comments on commit 230e566

Please sign in to comment.