twilio / video-quickstart-ios

Twilio Video Quickstart for iOS
https://www.twilio.com/docs/api/video
MIT License
460 stars 178 forks source link

Can I selectively subscribe to Tracks? #244

Closed hasgardee closed 2 years ago

hasgardee commented 6 years ago

How enable video of the single participant and audio for all room participate ?

ceaglest commented 6 years ago

Hi @hasgar,

You can have only one Participant share video if you'd like. We don't allow for Participants to selectively subscribe to Tracks which are published to a Room yet, but we are planning on adding this feature in future releases.

Can you be more specific about what you're looking for?

Best, Chris

hasgardee commented 6 years ago

In a room, there will have many users..app user only wants to see a specific user’s video..i know that user’s identity..but app user should need to hear the voice from every user in the room. hope you understand..sorry for my bad explanation earlier

ceaglest commented 6 years ago

Hi @hasgar,

No problem. For now, you could render only the video of the TVIRemoteParticipant that you want to see. Audio will be played back automatically.

The issue is that we don't offer Client side selective subscription APIs yet. So, even if you only render a single video Track your client will be automatically subscribed to all Tracks, forcing you to receive video that you don't want.

We're still working on the Client APIs, however we do have server side subscription controls in developer preview at the moment. If you're interested in coordinating subscriptions using a Server side REST API then I can get you setup to try it out.

Best, Chris

hasgardee commented 6 years ago

Yes, i would like to use rest api for that..please help me to setup that

ceaglest commented 6 years ago

Awesome, @ktoraskartwilio will be in touch with more info.

hasgardee commented 6 years ago

Okay.. same time all participats video n audio should be visible in web app for admin. So rest api will help to achieve this?

ceaglest commented 6 years ago

Yes, you can choose which Tracks each Participant is subscribed to. If you have an "admin" role in your app then you can ensure that this Participant gets each and every Track, while regular Participants only get 1 video Track and all the audio Tracks.

Edit: Updated the ticket title to make this more discoverable.

hasgardee commented 6 years ago

@ceaglest is it possible to get all user's audio only in the app? no need of video in app.. but in web app, admin have to see all user's video at the same time.. in starter project, there is only one remoteParticipant object. so does it mix the audio of many users in the room? if no how to implement that?

ceaglest commented 6 years ago

Hi @hasgar,

I believe Kedar contacted you privately about the developer preview, and I hope things are going well. In answer to your question, any audio tracks that your Client is subscribed to are mixed and played back automatically. You don't need to do anything on the Client side to make this happen. If for some reason you don't want to play a Track which you are subscribed to then you can use the RemoteAudioTrack.playbackEnabled property to stop playback.

Best, Chris

davidelettieri commented 5 years ago

Yes, you can choose which Tracks each Participant is subscribed to. If you have an "admin" role in your app then you can ensure that this Participant gets each and every Track, while regular Participants only get 1 video Track and all the audio Tracks.

@ceaglest Is there any code example on how to achieve this?

ceaglest commented 5 years ago

Hi @davidelettieri,

Sorry for the slow response.

@ceaglest Is there any code example on how to achieve this?

We held a private developer preview for the server side subscription APIs. Based upon the feedback we received, we determined that another iteration on the feature was needed. We are currently refining the APIs, and plan to release a 2nd version in Q2. I'd be happy to share sample code once we get closer to release and start putting together updated public facing docs.

Best, Chris

ceaglest commented 5 years ago

Hi @hasgar and @davidelettieri,

We have updated Video iOS to 2.10.0, which gives Clients the ability to connect without subscribing to Tracks. You can try our updated ReplayKitExample for an example of a publish-only Participant.

The Video team is working on more fully featured Client side subscription rules, and the REST API for later in Q2. I will provide a target release date once we get closer on these features.

Best, Chris

ceaglest commented 4 years ago

Hi,

The REST API to manage Participant subscriptions from your Server side application is generally available. I don't have an updated date on when these features might be available in a Client API.

Best, Chris

ceaglest commented 4 years ago

Hi,

The REST API has been generally available since November 2019, and we recommend using your Server application to manage subscriptions. iOS devices can connect as publish only Participants without using the REST API.

I don't have an ETA on when SDK side APIs for managing subscription rules will be available.

Thanks, Chris

rskvazh commented 4 years ago

@ceaglest Its very popular feature request for Twilio Video - Client-side subscriptions API. Any news about this? We need this for optimized "spatial" room with many participants

Ankish commented 4 years ago

@rskvazh : We are considering other platforms because of this feature, else there was definitely no doubt we would move ahead with Twilio. But Thanks!

ceaglest commented 4 years ago

Hi @rskvazh @Ankish,

Any news about this? We need this for optimized "spatial" room with many participants

We are focusing on adding Bandwidth Profiles to our mobile SDKs at the moment. This should allow you to improve quality in many common multiparty use cases with only client side APIs by switching off tracks that you don't want to receive.

I don't have a timeline on adding client side subscription APIs. When I have more information I will post an issue in https://github.com/twilio/twilio-video-ios to track this request.

Thanks, Chris

Ankish commented 3 years ago

@ceaglest : Just to know, do we yet have a solution to this with latest framework? It could improve the tracks a lot in our current app.

ceaglest commented 3 years ago

Hey @Ankish,

We are working on a release that will add client side track subscription controls. Our current plan is to monitor scene lifecycle, view visibility and renderer attachment in order automatically switch on/off subscribed tracks.

Would you be interested in trying a pilot later in March? If so, do you have any open support tickets we could speak further on?

Best, Chris

ceaglest commented 3 years ago

Hi @rskvazh,

It was an old comment, but is client side track subscription something that you are still interested in?

Best, Chris

Ankish commented 3 years ago

@ceaglest : Definitely. We have build the platform over Twilio with intensive buffer processing and lowering the subscription of tracks would give us the CPU bandwidth to improve a lot of our features. One of the most required features for us now. I will be happy to be active on the updates and provide feedback. You can open the ticket and we can follow up on it. Thanks!

ceaglest commented 3 years ago

Hi @Ankish,

Sounds great. It is definitely not ideal to be subscribing to Tracks, and receiving media that is not being displayed to the user.

Would you mind dropping the ID of the support ticket here so I can follow up with you?

Best, Chris

NarineManukyan commented 3 years ago

Following, we have similar issue

rskvazh commented 3 years ago

Hi @ceaglest Yes we need it, but on javascript SDK for now.

ceaglest commented 3 years ago

Hi @rskvazh,

Yes we need it, but on javascript SDK for now.

There isn't an issue tracking this request but we will be shipping idle track switch off in an upcoming JavaScript release.

I will update this issue once it becomes available.

Thanks, Chris

ceaglest commented 3 years ago

Hey @NarineManukyan and @Ankish,

Would either of you be interested in trying a pilot release for iOS with idle video track switch off? If so, please open a support ticket mentioning this GitHub issue and share the ID here.

We expect a pilot release after the Easter holiday. The public version will be released following feedback from internal and external stakeholders on the pilot.

Thanks, Chris

romanfurman6 commented 3 years ago

Hello, @ceaglest I think we have the same issue here. We need the ability to subscribe to a specific list of tracks for each user. Like: In one room we have User_A, User_B, User_C, User_D, User_E, User_F

Where User_A, User_B, User_C can hear & see each other in the same room (but not User_D, User_E, User_F)

User_D, User_E, User_F same ^ (but not User_A, User_B, User_C )

I guess you talked about this case ^, here, right?

Can we get access to that feature now? (JS SDK or RestAPI)

ceaglest commented 3 years ago

Hi @romanfurman6,

We need the ability to subscribe to a specific list of tracks for each user.

We are now providing the ability for SDKs (starting with JavaScript) to request that video tracks be switched off in Group Rooms. It's not exactly the same as selective track subscription but I think you will be able to achieve a similar result with most of the device resource savings.

Can we get access to that feature now? (JS SDK or RestAPI)

Yes, we have just released twilio-video.js-2.14.0 with client track switch off control. You can switch off video tracks if you don't want to display them in your app. We will still send audio but if you don't want to play it you can detach audio tracks from elements.

Best, Chris

ceaglest commented 2 years ago

We are now shipping Client Track Switch Off on all platforms. This is the replacement for selective subscription.