Is there a function to remove/suppress audio echoing using Agora web sdk ng? - agora.io

In live video streaming the audio gets echoed when there are two or more speakers joined the stream. Is there any function in Agora web SDK I could use to solve this?

Do try the self check methods at https://docs.agora.io/en/faq/echo.
Try audioTrack.stop() if it still persists (try to avoid playing that microphone track in the first place).
If the issue persists, contact Agora customer support (support#agora.io) and submit the issue with the following information:
The name of the channel where the echo occurs.
The uids of the users who hear the echo.
The uid of the user who causes the echo.
The recording files, if available.

Yes for this you can use the AEC and ANS properties of the agora. With these, you can suppress the echo.
await AgoraRTC.createMicrophoneAudioTrack({
AEC: true, ANS: true
});

Related

Sonos API sends too short auth code in return?

Turning to all you smart people out there for help, tips and trix :)
I want to connect my NodeRed instance to the Sonos API to control my speakers in various ways. During the OAUTH process however, after logging in with my username and password for my account, the auth code being sent back to me through my redirect_uri seems to be too short? In the developers' guide the example auth code looks like this:
f10072fa6-2134-4fe1-93fd-ca5b9cffa738
where in my case, I just receive the first part up until the first dash sign. Eg.:f10072fa6
At first I ran the connection through a NetScaler, then I changed to using a Nginx Reverse Proxy thinking that the Netscaler might have truncated the URL (for some very odd reason), but the result turned out the same..
Ideas anyone?
The Authorization code you received is correct. The Authorization code format was recently changed and the documentation needs to be updated to reflect this. This question was also answered in Authorization code has different structure than example code.
Thanks!
-Mark
You can also use nodered-sonos to control your speakers. No need to setup oauth2 and using the cloud based api, if you can also have super fast local control of your speakers.
I'm using a combination of the following tools for total control of the speakers:
MQTT server of your choice in Docker (I'm using emqx)
Sonos2mqtt, my own app to connect sonos to mqtt in docker
Node red with normal mqtt in/out flows.
My Favorite flows:
Join playbar to group if group starts playing
Pause group is playbar leaves group (it leaves if I turn on the TV, that should stop the music)
Play ring sound (on all speakers) if someone presses the doorbell
Announce (text-to-speech) when the backdoor is opened

How to get "mute" state of all users in the channel? [agora.io]

I have a Voice Call in which I would like to have a little overlay showcasing which users have their audio muted. Is there a callback I can use to know whether users have locally muted their stream?
I have not found a way to do this directly using agora.io's library.
You can use the onRemoteAudioStateChanged API: https://docs.agora.io/en/Video/API%20Reference/java/classio_1_1agora_1_1rtc_1_1_i_rtc_engine_event_handler.html#a24fd6b0d12214f6bc6fa7a9b6235aeff

How to retrieve all "audience" users of an interactive audio streaming channel

I am using AgoraWebSDK-NG to do a Web implementation.
My application uses interactive audio streaming. Video is not required.
I want to know how to retrieve all users who are part of the "audience" of a channel (and not "hosts"). I want to display such "audience" users in the UI.
Unfortunately I cannot find any method to be able to do so here https://agoraio-community.github.io/AgoraWebSDK-NG/api/en/interfaces/iagorartcclient.html#getlisteners
Please let me know how this would be possible. An example would be great. If it is not possible, then just let me know that as well. Thank you.
this is not possible at the moment with the NG SDK. To achieve this right now, you can use the Agora RTM SDK.
You can create an RTM channel with the same name as the RTC channel. Then you can use the RTM's channel events to know when an audience member joins or leaves.

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

Record participants video stream individually in jitsi-meet

I’m using jitsi for one of our requirement. I have followed quick installation steps to config and install jitsi. I am also using https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-iframe to create room along with some config changes.
One of our requirement is to record the video of participants individually. Basically saving each participants video stream. As of I know Jibri records the whole conference session but we need video streams of participants separately. There was a library which has been archived now Jirecon. I used a enhanced version of it, but was not successful.
Please can anybody help on which approach to follow and how to achieve.
Jibri joins as like participant and records the conference this mean you cannot record each participant via Jibri.
You can try client side recording and after that you can upload the file wherever you want. You can check RecordRTC( https://github.com/muaz-khan/RecordRTC ). But i am not sure about iFrame(you mention about "external_api.js"). You can try.
If you have own instance of jitsi, better way of implementation is instance web project(/usr/share/jitsi/meet). create a js file, develop client side recording and load the file into index.html. And trigger the recording actions via iframe postMessage .
I am not sure but if your purpose is sharing the media files to other participants, you can use jibri and save into local server tempMedia folder and share from there for a while.