connectivity handling, audio publishing

This commit is contained in:
David Zhao
2021-08-04 10:59:41 -07:00
parent aec2003140
commit 593890331e
14 changed files with 208 additions and 33 deletions
+11 -3
View File
@@ -6,12 +6,13 @@ import 'options.dart';
import 'track.dart';
class LocalAudioTrack extends Track {
MediaStream mediaStream;
MediaStream? mediaStream;
LocalAudioTrack(String name, MediaStreamTrack track, this.mediaStream)
: super(TrackType.AUDIO, name, track);
Future<LocalAudioTrack> createTrack(LocalAudioTrackOptions? options) async {
static Future<LocalAudioTrack> createTrack(
[LocalAudioTrackOptions? options]) async {
try {
var stream = await navigator.mediaDevices.getUserMedia({
"audio": true,
@@ -22,9 +23,16 @@ class LocalAudioTrack extends Track {
return Future.error(TrackCreateError());
}
return LocalAudioTrack("", stream.getVideoTracks().first, stream);
return LocalAudioTrack("", stream.getAudioTracks().first, stream);
} catch (e) {
return Future.error(e);
}
}
@override
stop() {
super.stop();
mediaStream?.dispose();
mediaStream = null;
}
}
+3 -3
View File
@@ -8,8 +8,8 @@ class LocalVideoTrack extends VideoTrack {
LocalVideoTrack(String name, MediaStreamTrack mediaTrack, MediaStream stream)
: super(name, mediaTrack, stream);
Future<LocalVideoTrack> createCameraTrack(
LocalVideoTrackOptions? options) async {
static Future<LocalVideoTrack> createCameraTrack(
[LocalVideoTrackOptions? options]) async {
if (options == null) {
options = LocalVideoTrackOptions(params: VideoPresets.qhd);
}
@@ -24,7 +24,7 @@ class LocalVideoTrack extends VideoTrack {
return Future.error(TrackCreateError());
}
return LocalVideoTrack("", stream.getVideoTracks().first, stream);
return LocalVideoTrack("camera", stream.getVideoTracks().first, stream);
} catch (e) {
return Future.error(e);
}
+8 -1
View File
@@ -4,8 +4,15 @@ import '../proto/livekit_models.pb.dart';
import 'track.dart';
class VideoTrack extends Track {
MediaStream mediaStream;
MediaStream? mediaStream;
VideoTrack(String name, MediaStreamTrack mediaTrack, this.mediaStream)
: super(TrackType.VIDEO, name, mediaTrack);
@override
stop() {
super.stop();
mediaStream?.dispose();
mediaStream = null;
}
}