One-to-Many Audio

I 'm looking for a push-to-talk solution. User pushes button in hybrid-cordova-app and talks to an audience consisting of 1 or several groups. The number of users listening can range to the hundreds. I was thinking of using WebRTC. The client sends audio in a stream to a server which the server then casts to the participants of the groups. It is one-way in a sense that it is no conference in which people talk disorderly. Is such a scenario feasible by using Licode? Can we get a solid performance? The user should be able to talk almost immediately and the delay in receiving should also be only half a second or so.

i am working on something like this, licode is not fit for this. but you can do ti use licode.

you can contact me by leeoxiang@gmail.com, may be i can give you some help.

Hi, could you share here why Licode is not working for this purpose?

I can imagine there’s a limit on the number of participants, but it will depend on software/hardware limits. I’m curious to know if software supposes a restriction in the number of listeners and whether we can do something to increase that number.

Hi!
Just wanted to share my experience, we have implemented and used in production a push-to-talk feature both with audio and video successfully using Licode. It’s pretty easy actually.

As Javi says, the problem can be the number of participants because every user has to subscribe to many streams. Depending on your use case, you can implement a smart strategy to only subscribe to people probably to speak.

Good luck!

Thanks for the responses! I just implemented a simple audio connection between a few browsers and that was quite easy, so that 's positive. I don 't see why I would need to connect to many streams tough? Because I think I want to do the following: let all users of a group get a stream for a room and then the client mutes/unmutes for the walkie/talkie / push-to-talk effect. Then in theory I would only need one stream to the Licode server, right?

In a multipary conference, with multiple speakers, each listener should receive a stream from each speaker. So, if you’ve a group of speakers, each client will connect to multiple streams. Then, you can mute the audio of those speakers who are not going to talk.

There’s another advantage of doing it right now because you can save bandwidth too by using Licode.

Hey jpkinkel
I am also working on this one-to-many by using Licode as Server. Only one user can send audio data to sever in a room, others choose mute/unmute the talker’s voice. When the talker done speek, someone else is able to talk. The difference is I working on ios and android apps not web. May I ask how you control only one user talks at one moment in Licode?

Hi leo_agle,

I got it working like this:

  • ubuntu / licode server installed in azure
  • used the javascripts in an ionic context, so in a web / mobile context
  • i used the example of connecting to room from licode website
  • at starting app: a user connects to all the rooms he is a member of AND
    publishes his stream to 1 room, the main room. He can switch main room in
    the interface
  • when starting to speak he announces that with signalling mechanism
    (signalR in my case)
  • ONLY THEN, do the other users subscribe to the room the user is talking to
  • In this way users are actually always talking to a certain room (is this
    necessary???) and just announce that they are really saying something
    useful. Then other users start listening.
  • I did the above to ensure speed, but maybe you could just publish your
    stream to a room WHEN you want to talk. I guess this will be slower, but is
    less heavy for the client and respects privacy more.
  • I had this working for 5 clients at a time relatively well. I never
    brought it into product, since the company is not sure whether this is
    viable enough for their business

let me know if you have any questions

Hi jpkinkel
thank for your reply. Sorry about respond u so late. I am using Intel Collaboration Suite now, which originate from licode, but have more functions.