11
Live MobiCast using node.js Ajay Narayan (60006864) Deepak Kumar Agarwal (71404423) Nishchint Raina (67569992)

Live MobiCast using node.js Ajay Narayan (60006864) Deepak Kumar Agarwal (71404423) Nishchint Raina (67569992)

Embed Size (px)

Citation preview

Page 1: Live MobiCast using node.js Ajay Narayan (60006864) Deepak Kumar Agarwal (71404423) Nishchint Raina (67569992)

Live MobiCast using node.js

Ajay Narayan (60006864)Deepak Kumar Agarwal (71404423)

Nishchint Raina (67569992)

Page 2: Live MobiCast using node.js Ajay Narayan (60006864) Deepak Kumar Agarwal (71404423) Nishchint Raina (67569992)

Problem Statement

• How to capture live events and share them instantly with available resources (mobile and Wi-Fi)?

• Mobile based webcast application– user to capture a live video from mobile camera– stream it on a predefined URL in the network– no internet (just WLAN infrastructure)

Page 4: Live MobiCast using node.js Ajay Narayan (60006864) Deepak Kumar Agarwal (71404423) Nishchint Raina (67569992)

Contribution

• Video streaming framework– independent of Internet– supports multiple channel subscription

• Scalable– stream is multicast from server

• Resource mobility support– anywhere in WLAN range

• Social application for mobile live video sharing

Page 5: Live MobiCast using node.js Ajay Narayan (60006864) Deepak Kumar Agarwal (71404423) Nishchint Raina (67569992)

Algorithm/Workflow

1. Resource connects server – registers channel

2. Server (webserver) accepts request– returns an html5 file in response

3. html5 file captures the live video stream – from resource's camera device and – sends the base64 encoded data frame to server (WebSocket)

4. Server (WebSocket) receives packet and – inserts it into its buffer store (redis/mongodb)

Page 6: Live MobiCast using node.js Ajay Narayan (60006864) Deepak Kumar Agarwal (71404423) Nishchint Raina (67569992)

Algorithm/Workflow

5. Client contacts the server (webserver) and – gets the client view html file

6. Client opens the html file in its browser and – subscribes to a desired channel from server (WebSocket)

7. Server receives packet from a resource– broadcasts to all clients connected to same channel

8. Client renders the frames to form a live video stream

Page 7: Live MobiCast using node.js Ajay Narayan (60006864) Deepak Kumar Agarwal (71404423) Nishchint Raina (67569992)

System

• Server– Node.js v0.6.19

• Express (HTTP)• Socket.io (WebSocket)• Mongodb (Frame buffer store)

• Client Viewer– JavaScript enabled browser (Opera, Chrome, Firefox)

• Resource – HTML5+JS Media capable browser (Opera Mini 12 for Android)– Camera capable device (HTC Sensation)

• Network– Wi-Fi/ad-hoc intranet LAN

Page 8: Live MobiCast using node.js Ajay Narayan (60006864) Deepak Kumar Agarwal (71404423) Nishchint Raina (67569992)

V2 V3

Architecture

Server.js

Node V8 Engine

Buffer

V1

join(c1)

frame:c1

dump_frame

Base64 Encoded data

get_frame

join(c2) join(c1)frame:c2 frame:c1

frame:c1

frame:c2R1

R2

redis/mongodb

Rx: Resource Vx: Viewer Cx: Channel x

Page 9: Live MobiCast using node.js Ajay Narayan (60006864) Deepak Kumar Agarwal (71404423) Nishchint Raina (67569992)

Evaluation

mobile resource

viewerserver

Page 10: Live MobiCast using node.js Ajay Narayan (60006864) Deepak Kumar Agarwal (71404423) Nishchint Raina (67569992)

Evaluation: PerformanceServer load during streaming

1 2 3 4 536.5

37

37.5

38

38.5

39

39.5

40

40.5

41

41.5

Node Usage [ Client vs CPU ]

cpu

Clients

CP

U %

1 2 3 4 50

0.2

0.4

0.6

0.8

1

1.2

1.4

Node Usage [ Clients vs Mem ]

mem

Client

Me

mo

ry %

CPU Usage

Memory Usage

Page 11: Live MobiCast using node.js Ajay Narayan (60006864) Deepak Kumar Agarwal (71404423) Nishchint Raina (67569992)

Conclusion

• Scalable solution to stream live media• No software download required for viewers• Lossy/noisy wireless environment pose

challenges (delay, jitter)• Streaming static video: quite acceptable

performance• In future can implement play-pause

functionality