diff --git a/README.md b/README.md index 798ced2..969e06c 100644 --- a/README.md +++ b/README.md @@ -1 +1,45 @@ -# WebRTC_research \ No newline at end of file +# Augmented Reality Video Streaming over WebRTC + +The next generation of real-time streaming applications like video-conferencing apps will augment video streams that are generated and computed from the feed. Understanding computation overheads present in enabling such advanced features can inform scheduling strategies within the edge computing environments. This research project aims to explore the possibilities of distributing the components of WebRTC, the backbone technology for real-time video conferencing, across edge devices. We specifically focus on the analysis of the computational overheads associated with deploying augmented reality and FFmpeg filters in video streams. + +## The basics + +![WebRTC workflow](images/WebRTC_working_2.png) +*The above figure demonstrates the workflow to setup a peer-to-peer WebRTC connection* + +![Video Streaming](images/video_source.png) +*Video streaming setup* + +![Frame Processing flowchart](images/AR.png) +*The above flowchart describes the steps involved in overlaying Augmented-Reality filters by processing a video stream frame-by-frame* + +## Experimental Setup +### Step1: Compile source code +In the current directory, execute the below commands +``` +make clean +make +``` + +### Step2: Start the signalling server +``` +./bin/main --server +``` + +### Step3: Bring 2 clients into the system +Start a client in two different terminals +``` +./bin/main --client +``` + +### Step4: Start the AR-processing script +``` +python3 ar-filters/app.py +``` + +### Step5: Start the video streaming source +``` +ffmpeg -f v4l2 -i /dev/video0 -f mpegts udp://224.0.0.251:5353 +``` + +*For more details about the methodology and results, please refer to the [project report](project_report.pdf).* diff --git a/images/AR.png b/images/AR.png new file mode 100644 index 0000000..10ffab5 Binary files /dev/null and b/images/AR.png differ diff --git a/images/FFmpeg_based_filters.png b/images/FFmpeg_based_filters.png new file mode 100644 index 0000000..d2e6e96 Binary files /dev/null and b/images/FFmpeg_based_filters.png differ diff --git a/images/STUN.png b/images/STUN.png new file mode 100644 index 0000000..557a1c3 Binary files /dev/null and b/images/STUN.png differ diff --git a/images/TURN.png b/images/TURN.png new file mode 100644 index 0000000..85cd21d Binary files /dev/null and b/images/TURN.png differ diff --git a/images/WebRTC_working.png b/images/WebRTC_working.png new file mode 100644 index 0000000..d0bae01 Binary files /dev/null and b/images/WebRTC_working.png differ diff --git a/images/WebRTC_working_2.png b/images/WebRTC_working_2.png new file mode 100644 index 0000000..c55a649 Binary files /dev/null and b/images/WebRTC_working_2.png differ diff --git a/images/video_source.png b/images/video_source.png new file mode 100644 index 0000000..e720c4e Binary files /dev/null and b/images/video_source.png differ diff --git a/project_report.pdf b/project_report.pdf new file mode 100644 index 0000000..61e9783 Binary files /dev/null and b/project_report.pdf differ