Publish audio when already publishing video with Ant Media - webrtc

I try to reproduce a classroom in which a teacher will publish video and audio and student only video at first.
Students can raise hand and teacher can accept to leave the student speak (all with dataChannel). I tried to change the mediaConstraints (enable audio) but as WebRTCAdaptor is basically stateless, it does not change a thing. Is there a simple way to publish audio as video is already published, as I cannot publish twice either.

If you create a WebRTCAdaptor with a disabled audio, user would not be able to speak later.
But you can use the Un/Mute mic funtions for that. As an example:
webRTCAdaptor.muteLocalMic() would mute the microphone and webRTCAdaptor.unmuteLocalMic()
These functions are included in the sample conference.html file.
You can use these functions for your case.

Related

I don't want camera permission needed for each video chat when there is a series of 1-1 video chats at an event

I am not a coder and having a web platform built with PHP that includes a series of 1-1 video chats in a scheduled networking "event". The problem that the developer is not able to solve with the video plug in that they are using (https://www.magnoliyan.com/video-chat-pro/) is that the user needs to give camera permisson before each chat. I need this permisson to happen one time only at the beginning of the event and not need there to be any further permission giving throughout the event. Of course I would like this to work on all platforms. I'm exploring agora.io as an option to solve this and replace the current plug in with agora. Does anyone know if agora would be the right fit for this or which video chat platform I should use to accomplish this? And if there is specific developer kind of language or code - please speak in as if I was a developer and I will pass on what you say to him directly. You don't need to worry about whether I will understand it.
Thanks!
Jon
Agora.io like any other WebRTC provider requests device camera permission only once. And all subsequent Videocall won't need any special permission (provided that they are on the same domain)
More specifically, Agora.io requests browser permission when stream.init method is invoked. This also turns on the camera light. stream.close turns off the camera light and deallocates the resources.
However, the subsequent stream.init function calls do not require permissions. (Camera light will just turn on)
References:
stream.init: https://docs.agora.io/en/Video/API%20Reference/web/interfaces/agorartc.stream.html#init
stream.close: https://docs.agora.io/en/Video/API%20Reference/web/interfaces/agorartc.stream.html#close

NAudio - Detect Audio via Application

Windows Volume Mixer shows audio output for individual applications.
Using NAudio, what is the right way for me to tap into this information? I essentially want to be able to make my application say:
Always record all audio input/output. Unless otherwise specified, only keep a buffer of the last 30 seconds. Throw the test away. (I know how to do this)
When Skype, Vonage, or Ring Central plays audio for more than 5 seconds, ask the user if they want to start saving the audio. (How would I do this?)
If so, save the 30-second buffer to a file and then start recording live. (I know how to do this)
Thanks for the help!
Windows won't let you capture audio from individual applications. You can use NAudio's WasapiLoopbackCapture to capture audio from all applications.
If you just want to see audio output levels for all apps, that can be achieved with the IMMDevice APIs which NAudio has wrappers for. It doesn't come with a specific demo showing that, but there's another open source project, EarTrumpet that you could explore to see how its done.

Kurento group call not able to handle users without video?

i implemented group calls in my website, and everything works nice, a few days ago i tested the system again but happend to join in a computer that had no webcam, only mic, and everyone else is not able to listen this user if he have no video. The test was:
User A- video and mic
User B- video and mic
User C- video and mic
User D- only mic
Everyone sees and listen everyone except User D that is not able to be listen from no body.
i tested with difrent computer, just unpluged the webcam and the bug is the same, if i have no video to share and join a grou call with a mic nobody can listen.
Im using last version of kms
Anyone knows if this a kurento Bug or something else?
I mean this type of situation should be fix by default, many people join group calls with no video and others with it, unless i am missing something that i need to add to cover that situations?
Thank you, sorry bad english.
In the room, each client negotiates both audio and video. If you only provide audio, some navigators (like Chrome) can't handle the fact that you have negotiated both audio and video, but are only providing audio. Therefore, it waits until you provide a video track, so both tracks are synchronized.
The solution is to have clients negotiate the type of media they are going to provide, and not both.

Create a custom desktop YouTube player

I want to create an application capable to play YouTube video's audios and also save the downloaded content in a local cache, therefore when the user decides to resume or play the video again, then it doesn't have to download part of video again but only download the remaining part (User can decide what to do with the cache then, and how to organize it).
It is also very convenient for mobiles (it is my main focus) but I'd like to create a desktop one too for experimental purposes.
So, my question itself is, does YouTube provide any API for this? I mean, in order to cache the download content I need that my application download the content and not any embed player (also remember that it is a native application). I have a third-party application in my Android system that plays YouTube videos, so I think it's possible unless that the developers use some sort of hack, again this is what I don't know.
Don't confuse with the web gdata info API and the embed API, this is not what I want, what I want is to handle the video transfer.
As far as I know, there is no official API for that. However, you could use libquvi to look up the URLs of the real video data, or you could have a look at how they do it and reimplement it yourself (see here).

Application-Bridge for iChat Audio Channels

There is a feature in GarageBand that allows you to record iChat Audio sessions directly into GarageBand. When you are the host of an iChat conference (you called the other party/parties), you can open GarageBand and hit record, and GarageBand will ask you if you wish to record the conference. Say yes, and GarageBand creates distinct tracks for all members of the conference, and records isolated audio from them into their own channel, complete with their username (or real name as determined by Address Book), and Avatar.
I'm interested in finding a way to connect this feature into other software.
First: Is this API documented? (I am not a paid Apple Developer.)
Second: Would it be possible to write a piece of software that would take these iChat audio channels, and create them as sound devices? Ideally this would be similar to the way Soundflower works to create a sound source that is a composite of all sound sources.
In theory, this would enable ANY recording application to take advantage of this iChat feature, as opposed to just GarageBand, without the need for a custom audio channel bridge for every individual piece of recording software.