Skip to content

Commit 8b9b835

Browse files
authoredNov 26, 2024··
Merge pull request #58 from ant-media/add_getter_for_local_tracks
Add getLocalVideoTrack and getLocalAudioTrack methods
2 parents 0065618 + 8eb646f commit 8b9b835

File tree

4 files changed

+50
-11
lines changed

4 files changed

+50
-11
lines changed
 

‎WebRTC-Sample-App/VideoViewController.swift

+9
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,15 @@ extension VideoViewController: AntMediaClientDelegate {
259259
func localStreamStarted(streamId: String) {
260260
print("Local stream added")
261261
self.fullVideoView.isHidden = false
262+
263+
var localVideoTrack:RTCVideoTrack? = self.client?.getLocalVideoTrack();
264+
265+
print("local video trackId:\(localVideoTrack?.trackId)");
266+
267+
var localAudioTrack:RTCAudioTrack? = self.client?.getLocalAudioTrack();
268+
269+
print("local audio trackId:\(localAudioTrack?.trackId)");
270+
262271
}
263272

264273

‎WebRTCiOSSDK/api/AntMediaClient.swift

+14-1
Original file line numberDiff line numberDiff line change
@@ -508,9 +508,14 @@ open class AntMediaClient: NSObject, AntMediaClientProtocol {
508508
if (self.webRTCClientMap[id] == nil) {
509509
AntMediaClient.printf("Has wsClient? (start) : \(String(describing: self.webRTCClientMap[id]))")
510510

511-
self.webRTCClientMap[id] = WebRTCClient.init(remoteVideoView: remoteView, localVideoView: localView, delegate: self, mode: mode != .unspecified ? mode : self.mode , cameraPosition: self.cameraPosition, targetWidth: self.targetWidth, targetHeight: self.targetHeight, videoEnabled: self.videoEnable, enableDataChannel: self.enableDataChannel, useExternalCameraSource: self.useExternalCameraSource, externalAudio: self.externalAudioEnabled, externalVideoCapture: self.externalVideoCapture, cameraSourceFPS: self.cameraSourceFPS, streamId:id,
511+
self.webRTCClientMap[id] = WebRTCClient.init(remoteVideoView: remoteView, localVideoView: localView, delegate: self, cameraPosition: self.cameraPosition, targetWidth: self.targetWidth, targetHeight: self.targetHeight, videoEnabled: self.videoEnable, enableDataChannel: self.enableDataChannel, useExternalCameraSource: self.useExternalCameraSource, externalAudio: self.externalAudioEnabled, externalVideoCapture: self.externalVideoCapture, cameraSourceFPS: self.cameraSourceFPS, streamId:id,
512512
degradationPreference: self.degradationPreference);
513513

514+
515+
if (self.mode != .play) {
516+
self.webRTCClientMap[id]?.addLocalMediaStream();
517+
}
518+
514519
self.webRTCClientMap[id]?.setToken(token)
515520

516521
AntMediaClient.rtcAudioSession.add(self);
@@ -637,6 +642,14 @@ open class AntMediaClient: NSObject, AntMediaClientProtocol {
637642
self.sendAudioTrackStatusNotification(enabled:enableTrack);
638643
}
639644

645+
open func getLocalAudioTrack() -> RTCAudioTrack? {
646+
self.webRTCClientMap[self.publisherStreamId ?? (self.p2pStreamId ?? "")]?.getLocalAudioTrack();
647+
}
648+
649+
open func getLocalVideoTrack() -> RTCVideoTrack? {
650+
self.webRTCClientMap[self.publisherStreamId ?? (self.p2pStreamId ?? "")]?.getLocalVideoTrack();
651+
}
652+
640653
func sendNotification(eventType:String, streamId: String = "") {
641654
let notification = [
642655
EVENT_TYPE: eventType,

‎WebRTCiOSSDK/api/AntMediaClientProtocol.swift

+9
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,15 @@ public protocol AntMediaClientProtocol {
356356
*/
357357
func enableTrack(trackId:String, enabled:Bool)
358358

359+
/**
360+
Get the local video track which is local camera or external source which is screen
361+
*/
362+
func getLocalVideoTrack() -> RTCVideoTrack?;
363+
364+
/**
365+
Get the local audio track which is the local microphone
366+
*/
367+
func getLocalAudioTrack() -> RTCAudioTrack?;
359368
/**
360369
Call this method to join a conference room
361370
- Parameters

‎WebRTCiOSSDK/api/webrtc/WebRTCClient.swift

+18-10
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,16 @@ class WebRTCClient: NSObject {
8585
self.peerConnection = WebRTCClient.factory.peerConnection(with: configuration, constraints: defaultConstraint, delegate: self)
8686
}
8787

88-
public convenience init(remoteVideoView: RTCVideoRenderer?, localVideoView: RTCVideoRenderer?, delegate: WebRTCClientDelegate, mode: AntMediaClientMode, cameraPosition: AVCaptureDevice.Position, targetWidth: Int, targetHeight: Int, streamId: String) {
88+
public convenience init(remoteVideoView: RTCVideoRenderer?, localVideoView: RTCVideoRenderer?, delegate: WebRTCClientDelegate, cameraPosition: AVCaptureDevice.Position, targetWidth: Int, targetHeight: Int, streamId: String) {
8989
self.init(remoteVideoView: remoteVideoView, localVideoView: localVideoView, delegate: delegate,
90-
mode: mode, cameraPosition: cameraPosition, targetWidth: targetWidth, targetHeight: targetHeight, videoEnabled: true, enableDataChannel:false, streamId: streamId)
90+
cameraPosition: cameraPosition, targetWidth: targetWidth, targetHeight: targetHeight, videoEnabled: true, enableDataChannel:false, streamId: streamId)
9191
}
92-
public convenience init(remoteVideoView: RTCVideoRenderer?, localVideoView: RTCVideoRenderer?, delegate: WebRTCClientDelegate, mode: AntMediaClientMode, cameraPosition: AVCaptureDevice.Position, targetWidth: Int, targetHeight: Int, videoEnabled: Bool, enableDataChannel: Bool, streamId: String) {
92+
public convenience init(remoteVideoView: RTCVideoRenderer?, localVideoView: RTCVideoRenderer?, delegate: WebRTCClientDelegate, cameraPosition: AVCaptureDevice.Position, targetWidth: Int, targetHeight: Int, videoEnabled: Bool, enableDataChannel: Bool, streamId: String) {
9393
self.init(remoteVideoView: remoteVideoView, localVideoView: localVideoView, delegate: delegate,
94-
mode: mode, cameraPosition: cameraPosition, targetWidth: targetWidth, targetHeight: targetHeight, videoEnabled: true, enableDataChannel:false, useExternalCameraSource: false, streamId: streamId)
94+
cameraPosition: cameraPosition, targetWidth: targetWidth, targetHeight: targetHeight, videoEnabled: true, enableDataChannel:false, useExternalCameraSource: false, streamId: streamId)
9595
}
9696

97-
public convenience init(remoteVideoView: RTCVideoRenderer?, localVideoView: RTCVideoRenderer?, delegate: WebRTCClientDelegate, mode: AntMediaClientMode, cameraPosition: AVCaptureDevice.Position, targetWidth: Int, targetHeight: Int, videoEnabled: Bool, enableDataChannel: Bool, useExternalCameraSource: Bool, externalAudio: Bool = false, externalVideoCapture: Bool = false, cameraSourceFPS: Int = 30, streamId: String,
97+
public convenience init(remoteVideoView: RTCVideoRenderer?, localVideoView: RTCVideoRenderer?, delegate: WebRTCClientDelegate, cameraPosition: AVCaptureDevice.Position, targetWidth: Int, targetHeight: Int, videoEnabled: Bool, enableDataChannel: Bool, useExternalCameraSource: Bool, externalAudio: Bool = false, externalVideoCapture: Bool = false, cameraSourceFPS: Int = 30, streamId: String,
9898
degradationPreference: RTCDegradationPreference = RTCDegradationPreference.maintainResolution) {
9999
self.init(remoteVideoView: remoteVideoView, localVideoView: localVideoView, delegate: delegate, externalAudio: externalAudio)
100100
self.cameraPosition = cameraPosition
@@ -107,12 +107,10 @@ class WebRTCClient: NSObject {
107107
self.cameraSourceFPS = cameraSourceFPS;
108108
self.streamId = streamId;
109109
self.degradationPreference = degradationPreference
110-
111-
if (mode != .play) {
112-
self.addLocalMediaStream()
113-
}
114110
}
115111

112+
113+
116114
public func externalVideoCapture(externalVideoCapture: Bool) {
117115
self.externalVideoCapture = externalVideoCapture;
118116
}
@@ -412,7 +410,7 @@ class WebRTCClient: NSObject {
412410
}
413411

414412

415-
private func addLocalMediaStream() -> Bool {
413+
public func addLocalMediaStream() -> Bool {
416414

417415

418416
AntMediaClient.printf("Add local media streams")
@@ -444,6 +442,16 @@ class WebRTCClient: NSObject {
444442
return true
445443
}
446444

445+
public func getLocalVideoTrack() -> RTCVideoTrack {
446+
return self.localVideoTrack;
447+
}
448+
449+
public func getLocalAudioTrack() -> RTCAudioTrack {
450+
return self.localAudioTrack;
451+
}
452+
453+
454+
447455
public func setDegradationPreference(degradationPreference:RTCDegradationPreference) {
448456
self.degradationPreference = degradationPreference
449457
}

0 commit comments

Comments
 (0)
Please sign in to comment.