# Using LiCode to build this Architecture

**URL:** https://discourse.lynckia.com/t/using-licode-to-build-this-architecture/299
**Category:** Uncategorized
**Created:** [March 27, 2014, 10:30pm UTC](https://discourse.lynckia.com/t/using-licode-to-build-this-architecture/299 "2014-03-27T22:30:08Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![Michael\_Awetahegn](https://avatars.discourse-cdn.com/v4/letter/m/eb9ed0/32.png) [@Michael\_Awetahegn](https://discourse.lynckia.com/u/Michael_Awetahegn)
#### Post date: [March 27, 2014, 10:30pm UTC](https://discourse.lynckia.com/t/using-licode-to-build-this-architecture/299/1 "2014-03-27T22:30:08Z")

</div>

Hi,

I wanted to build the Architecture below using LiCode but I don’t know what  
each part would consist of and which API I would have to use.

In the System below the “Broadcasting Device” would use the webcam and  
audio to stream live recording over to a place where “Clients” which don’t  
use any devices or have an output stream, but only an input to watch the  
video like you would on YouTube.  
What extra information am I required to know?  
Also what would be the maximum number of people able to connect to the  
room/server and watch the video? (Using Erizo as an MCU) as I would want \>  
500 people to connect and watch.

[https://lh6.googleusercontent.com/-L\_6DPgIGckQ/UzSmTNm5m3I/AAAAAAAAAKg/KmnJdS6PJtg/s1600/arch.png](https://lh6.googleusercontent.com/-L_6DPgIGckQ/UzSmTNm5m3I/AAAAAAAAAKg/KmnJdS6PJtg/s1600/arch.png)

Thank You!

---

<div class="post-metadata">

### Author: ![Michael\_Awetahegn](https://avatars.discourse-cdn.com/v4/letter/m/eb9ed0/32.png) [@Michael\_Awetahegn](https://discourse.lynckia.com/u/Michael_Awetahegn)
#### Post date: [March 31, 2014, 10:01pm UTC](https://discourse.lynckia.com/t/using-licode-to-build-this-architecture/299/2 "2014-03-31T22:01:41Z")

</div>

Thank you. I understand how it should work better now.

But what I wanted to know was, if one person creates a stream and like 20  
people subscribe to it and watch and while that stream is live, then if  
another stream is created will it be too heavy on the servers? or is this  
not a problem?

Regards,

MichaelOn Monday, March 31, 2014 1:29:00 PM UTC+3, Pedro Rodriguez wrote:

> Hi Michael,
> 
> In that scenario, in Licode, you would only have to create a local stream  
> for the broadcaster. That stream would then be published using room.publish  
> in the API. Each of the viewers would then only have to subscribe to that  
> stream once the stream-added event is received. The basicExample  
> (extras/basic\_example) in Licode is a good place to start.
> 
> As far as performance goes, the amount of clients supported at the same  
> time will depend on the CPU available as in WebRTC we have to re-encrypt  
> the source stream for each participant. The quality (bandwidth) of the  
> video is also an important factor. There is no “hard” limit in Licode, as  
> long as you have the CPU/bandwidth/sockets needed, you can keep adding  
> viewers.  
> You may also have to update the maximum open files limit for the  
> erizoController process, as it would have to keep many open sockets (check  
> “ulimit -a” in Ubuntu)
> 
> On a quite old (2008) core2Duo@3.0GHz (E8400), we have tested broadcasts  
> for up to 30 people at 300Kbps, that takes up to 25% CPU of 1 of the cores  
> (12,5 in total). The CPU usage grows linearly with the amount of users.
> 
> Cheers!
> 
> –  
> Pedro Rodriguez
> 
> On 27 Mar 2014 at 23:30:09, Michael Awetahegn ([michaelaw...@gmail.com](mailto:michaelaw...@gmail.com)\<javascript:\>) wrote:
> 
> Hi,
> 
> I wanted to build the Architecture below using LiCode but I don’t know  
> what each part would consist of and which API I would have to use.
> 
> In the System below the “Broadcasting Device” would use the webcam and  
> audio to stream live recording over to a place where “Clients” which don’t  
> use any devices or have an output stream, but only an input to watch the  
> video like you would on YouTube.  
> What extra information am I required to know?  
> Also what would be the maximum number of people able to connect to the  
> room/server and watch the video? (Using Erizo as an MCU) as I would want \>  
> 500 people to connect and watch.
> 
> [https://lh6.googleusercontent.com/-L\_6DPgIGckQ/UzSmTNm5m3I/AAAAAAAAAKg/KmnJdS6PJtg/s1600/arch.png](https://lh6.googleusercontent.com/-L_6DPgIGckQ/UzSmTNm5m3I/AAAAAAAAAKg/KmnJdS6PJtg/s1600/arch.png)
> 
> ## Thank You!
> 
> You received this message because you are subscribed to the Google Groups  
> “lynckia” group.  
> To unsubscribe from this group and stop receiving emails from it, send an  
> email to [lynckia+u...@googlegroups.com](mailto:lynckia+u...@googlegroups.com) \<javascript:\>.  
> For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

---

<div class="post-metadata">

### Author: ![Pedro\_Rodriguez](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.lynckia.com/pedro_rodriguez/32/23_2.png) [@Pedro\_Rodriguez](https://discourse.lynckia.com/u/Pedro_Rodriguez)
#### Post date: [March 31, 2014, 10:29am UTC](https://discourse.lynckia.com/t/using-licode-to-build-this-architecture/299/3 "2014-03-31T10:29:00Z")

</div>

Hi Michael,

In that scenario, in Licode, you would only have to create a local stream for the broadcaster. That stream would then be published using room.publish in the API. Each of the viewers would then only have to subscribe to that stream once the stream-added event is received. The basicExample (extras/basic\_example) in Licode is a good place to start.

As far as performance goes, the amount of clients supported at the same time will depend on the CPU available as in WebRTC we have to re-encrypt the source stream for each participant. The quality (bandwidth) of the video is also an important factor. There is no “hard” limit in Licode, as long as you have the CPU/bandwidth/sockets needed, you can keep adding viewers.  
You may also have to update the maximum open files limit for the erizoController process, as it would have to keep many open sockets (check “ulimit -a” in Ubuntu)

On a quite old (2008) core2Duo@3.0GHz (E8400), we have tested broadcasts for up to 30 people at 300Kbps, that takes up to 25% CPU of 1 of the cores (12,5 in total). The CPU usage grows linearly with the amount of users.

Cheers!–  
Pedro Rodriguez

On 27 Mar 2014 at 23:30:09, Michael Awetahegn ([michaelawetahegn43@gmail.com](mailto:michaelawetahegn43@gmail.com)) wrote:

Hi,

I wanted to build the Architecture below using LiCode but I don’t know what each part would consist of and which API I would have to use.

In the System below the “Broadcasting Device” would use the webcam and audio to stream live recording over to a place where “Clients” which don’t use any devices or have an output stream, but only an input to watch the video like you would on YouTube.  
What extra information am I required to know?  
Also what would be the maximum number of people able to connect to the room/server and watch the video? (Using Erizo as an MCU) as I would want \> 500 people to connect and watch.

## Thank You!

You received this message because you are subscribed to the Google Groups “lynckia” group.  
To unsubscribe from this group and stop receiving emails from it, send an email to [lynckia+unsubscribe@googlegroups.com](mailto:lynckia+unsubscribe@googlegroups.com).  
For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).
