Re: audiomixer usage
Michael Gruner via gstreamer-devel <[email protected]> Wed, 25 Dec 2024 12:24:38 -0600
| Newsgroups | gmane.comp.video.gstreamer.devel |
|---|---|
| Message-ID | <[email protected]> |
--Apple-Mail-5ABC748E-6CB7-44CE-A075-D892605FDA87 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi there, happy holidays. What you describe is a well known topology named MCU: Multipoint Control Uni= t. There are others worth exploring, like SFU: Selective Forwarding Unit or M= esh. I know this is not was what you asked, but I hope it eases your researc= h. https://medium.com/@toshvelaga/webrtc-architectures-mesh-mcu-and-sfu-12c5022= 74d7 Now to your question, the MCU approach would be to have one audiomixer per c= lient. Each client audiomixer will mix all the other channels, except itself= . This is easy to implement, but will load tremendously the server. It might= not more manageable with audio only. The SFU approach would be not to use an audiomixer in the server at all. Eac= h client would receive N network stream, each for every other clients. These= are then mixed locally by each client. This is very lightweight in the serv= er, but consumes exponentially more network bandwidth which, again, may be m= anageable with audio only.=20 If, for whatever reason, you need to filter out using DSP techniques, you ma= y look into echo cancellation. Check the work by Nicholas in https://www.collabora.com/news-and-blog/blog/2016/07/08/gstreamer-echo-cance= ller/ Note that this is not quite the intended purpose and, personally, is not the= approach I would go for. Finally, please recall that you'll likely get more answers in the gstreamer d= iscourse: https://discourse.gstreamer.org/ Michael www.ridgerun.com > On 25 Dec 2024, at 07:27, Pradeep Acharya via gstreamer-devel <gstreamer-d= [email protected]> wrote: >=20 > =EF=BB=BF > Hi All, >=20 > I'm new to developing audio conferencing solutions on server side and impl= ementing the same using audiomixer plugin. The output of the mixer has audio= mixed that is received from all participants. The mixed audio has to be tra= nsmitted to all participants. Before transmitting mixed audio, participants= ' audio has to be filtered out from the output generated by the audio mixer a= nd sent to that participant. Is there any plugin that checks and filters out= samples from the output generated by audiomixer plugin? If there is no such= plugin , kindly let me know other possible solutions for this. >=20 > Thanks & Regards >=20 >=20 >=20 --Apple-Mail-5ABC748E-6CB7-44CE-A075-D892605FDA87 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable <html><head><meta http-equiv=3D"content-type" content=3D"text/html; charset=3D= utf-8"></head><body dir=3D"auto">Hi there, happy holidays.<div><br></div><di= v>What you describe is a well known topology named MCU: Multipoint Control U= nit. There are others worth exploring, like SFU: Selective Forwarding Unit o= r Mesh. I know this is not was what you asked, but I hope it eases your rese= arch.</div><div><br></div><div><div style=3D"display: block;" class=3D""><a h= ref=3D"https://medium.com/@toshvelaga/webrtc-architectures-mesh-mcu-and-sfu-= 12c502274d7">https://medium.com/@toshvelaga/webrtc-architectures-mesh-mcu-an= d-sfu-12c502274d7</a><br></div></div><div><br></div><div>Now to your questio= n, the MCU approach would be to have one audiomixer per client. Each client a= udiomixer will mix all the other channels, except itself. This is easy to im= plement, but will load tremendously the server. It might not more manageable= with audio only.</div><div><br></div><div>The SFU approach would be not to u= se an audiomixer in the server at all. Each client would receive N network s= tream, each for every other clients. These are then mixed locally by each cl= ient. This is very lightweight in the server, but consumes exponentially mor= e network bandwidth which, again, may be manageable with audio only. </= div><div><br></div><div>If, for whatever reason, you need to filter out usin= g DSP techniques, you may look into echo cancellation. Check the work by Nic= holas in</div><div><br></div><div><a href=3D"https://www.collabora.com/news-= and-blog/blog/2016/07/08/gstreamer-echo-canceller/">https://www.collabora.co= m/news-and-blog/blog/2016/07/08/gstreamer-echo-canceller/</a></div><div><div= style=3D"display: block;" class=3D""><br></div><div style=3D"display: block= ;" class=3D"">Note that this is not quite the intended purpose and, personal= ly, is not the approach I would go for.</div></div><div><br></div><div>Final= ly, please recall that you'll likely get more answers in the gstreamer disco= urse:</div><div><br></div><div><div style=3D"display: block;" class=3D""><a h= ref=3D"https://discourse.gstreamer.org/">https://discourse.gstreamer.org/</a= ></div></div><div><br id=3D"lineBreakAtBeginningOfSignature"><div dir=3D"ltr= ">Michael</div><div dir=3D"ltr">www.ridgerun.com</div><div dir=3D"ltr"><br><= blockquote type=3D"cite">On 25 Dec 2024, at 07:27, Pradeep Acharya via gstre= amer-devel <[email protected]> wrote:<br><br></blo= ckquote></div><blockquote type=3D"cite"><div dir=3D"ltr">=EF=BB=BF<div dir=3D= "ltr"><div>Hi All,</div><div><br></div><div>I'm new to developing audio conf= erencing solutions on server side and implementing the same using audiomixer= plugin. The output of the mixer has audio mixed that is received from all p= articipants. The mixed audio has to be transmitted to all participants. = ; Before transmitting mixed audio, participants' audio has to be filtered ou= t from the output generated by the audio mixer and sent to that participant.= Is there any plugin that checks and filters out samples from the output gen= erated by audiomixer plugin? If there is no such plugin , kindly let me know= other possible solutions for this.</div><div><br></div><div>Thanks & Re= gards</div><div><br></div><div><br></div><div></div><div><br></div></div> </div></blockquote></div></body></html>= --Apple-Mail-5ABC748E-6CB7-44CE-A075-D892605FDA87--