wiki:Other/Summer/2015/hVideo

Dynamic Video Encoding

Table of Contents

  1. 2015 Winlab Summer Internship
    1. Projects
    1. Indoor Localization
    2. Introduction
      1. Motivation
      2. What is ORBIT Lab?
      3. Overall Approach
      4. Resources
      5. Procedure
      6. Plan of Action
      7. Weekly Presentations
      8. Team
    1. SDR in ORBIT: Spectrum Sensing
      1. Introduction
      2. Team
      3. Objectives
      4. Weekly Progress
      5. Experiments
    1. LTE Unlicensed (LTE-U)
      1. Introduction
      2. Objectives
      3. Theory
      4. Analyzing Tools
      5. Experiment 1: Transmit and Receive LTE Signal
      6. Experiment 2: The Waterfall Plot
      7. Experiment 3: eNB and UE GUI
      8. Experiment 4: Varying Bandwidths
      9. Experiment 5: Working with TDD or FDD
      10. Experiment 6: TDD with Varying Bandwidths
      11. Experiment 7: TDD Waterfall Plot
      12. Poster
      13. Members
      14. Materials
      15. Resources
    1. Distributed Simulation of Power Grid
      1. Introduction
      2. Objectives
      3. People
      4. Resources
    1. Context-Aware IoT Application on MobilityFirst
      1. Introduction
      2. Objectives
      3. System Architecture
      4. Network Diagram
      5. Experiment Tools
      6. Results
      7. Future Work
      8. Team member
    1. Real-Time Cyber Physical Systems Application on MobilityFirst
      1. Github Repo
      2. Introduction
      3. Preliminary Goal
      4. Outline of the Project
      5. Tasks
      6. Image Processing
      7. Weekly Summary
      8. Team
      9. Presentation Slides
    1. GNRS Assited Inter Domain Routing
      1. Introduction
    1. GNRS Management
      1. Introduction
      2. Work Milestones
    1. Effective Password Cracking Using GPU
      1. Introduction
      2. Objectives
      3. GPU
      4. Experiment
      5. Tools and Resources
  2. Body Sensor Networks
    1. Introduction
    2. Project Overview
    3. Data Collection
      1. Initial BCI data
    4. Data Analysis
    5. Tools/ Resources
    1. Unity Traffic Simulation
      1. Introduction
      2. Objectives
      3. People
    1. Mobile Security
      1. Introduction
      2. Motivation
    2. Resources
  3. Dynamic Video Encoding
    1. Introduction
    2. Goals
    3. Background Information
      1. Anatomy of a Video File
      2. What is a CODEC?
      3. H.264 Compression Algorithm
      4. Scalable Video Coding
      5. Network Emulator Test Results
      6. DASH Multi-Bitrate Encoding
      7. DASH Content Generation
      8. Bitrate Profiles
      9. Video Encoding Algorithms
      10. GPAC
    4. Presentations
    5. People

Introduction

Live-streaming video from a device to the Internet in an efficient manner can be a tricky task. The concept of video-streaming itself is simple; the device records whatever is going on and then streams the video file information live to a video-hosting website. The problem arises with the nature of internet/data/WiFi connections. Having an unstable connection will result in a low, partially corrupted, and blurry video file on the streaming server. The original video file can always be uploaded later on to wherever the video was streamed to, but just simply re-uploading the same video file is a waste of bandwidth and time. Bits and pieces of the video file were already sent to the streaming server during the live-streaming process; why not use the information previously sent to figure out and upload whatever is missing? That's the goal and name of our project: Dynamic Video Encoding.

Goals

  • Automation of bash script procedures via Ruby scripts.
  • Dynamic adaptive streaming over HTTP (DASH).
  • Streamline DASH encoding
  • DASH video streaming tests with variable bitrate control

Background Information

Anatomy of a Video File

  1. Container
    • Defined by file extension
    • Holds various audio/video streams
    • Specifies contained encoding scheme
      1. Encoding scheme defines algorithm(s) used to encode/decode video
  1. Content stream
    • Contains encoded audio/video streams
    • Limits video use to only specific codecs

What is a CODEC?

  1. Encoder-Decoder
    • Algorithms defined in compression standard
    • Can sometimes encode/decode several compression algorithms
    • Popular compression algorithms include JPEG/MPEG family

H.264 Compression Algorithm

  1. Defined in MPEG-4 Part 10: Advanced Video Coding
    • Implements many common image/video compression techniques
      1. Discrete Cosine Transform (DCT)
      2. Motion Compensation

Scalable Video Coding

  1. Uses various methods to split a high quality bit stream into component layers
    • Temporary Scalability
    • Spatial Scalability
    • SNR Scalability
  2. Decoder recombines selected layers to form output video stream

Network Emulator Test Results

  1. Original File

  1. 5% Packet Loss Simulation

  1. 8 Megabit Connection Simulation

  1. 12 Megabit Connection Simulation

DASH Multi-Bitrate Encoding

  • DASH - Dynamic Adaptive Streaming over HTTP
  • Encodes single video into multiple resolutions/bitrates
  • Video files are segmented in certain time intervals
  • Manifest file describes resolutions and bitrates of separately encoded files
  • Client and server monitor network connections and switch video files as necessary

DASH Content Generation

  • Minimal existing software support for encoding/playing DASH content
  • Encode multiple copies of videos using ffmpeg
  • Generate manifest files using MP4Box and manually combine

Bitrate Profiles

  1. Camera Bandwidth Profile

  1. Client Bandwidth Profile

  1. Complete Bandwidth Profile

By analyzing both the camera and client bandwidth profiles, we can hopefully create a better stream quality by dynamically adapting to the network conditions and improving the quality where possible.

Video Encoding Algorithms

  1. Throughput Estimation Method
  • Averages past bandwidth estimates and creates a smoothed throughput estimation curve

  • Standard deviation determined by recent deviation from expected throughput

  1. DASH Adaptation Algorithm
  • The algorithm measures average download time of each segments
  • It then builds an adaptation decision based on this download time and the average bitrate of the whole video

  • The function maxbw(s_i) returns the max bandwidth for that specific segment i

GPAC

  1. What is GPAC?
  • Open source multimedia framework
  • Contains a multimedia player (MP4Client / Osmo4) as well as a multimedia packager called MP4Box
  • Written in C
  • Can be manipulated through the command-line, GUI, or browser plugins
  1. Why use GPAC?
  • The multimedia player MP4Client is a command-line player for GPAC, allowing it to be easily used on the Linux OS and via any bashscript shell
  • The multimedia package MP4Box is a powerful tool that can be used for manipulating many video file formats such as .avi, .mpg, .ts, and most importantly, .mp4
  • MP4Box can be used for conversion, splitting, combining, etc.
  • The most important part of GPAC, however, is that it supports DASH
  1. Sample Experiment Rig

  1. GPAC Script
  • Script first initializes the streaming
  • It then limits and measures the bandwidth in parallel

  • Results

  • The results were not quite as expected, with the bandwidth tests averages going above the bandwidth limit during some portions of the streaming, indicating a flaw either in the program or in the data

Presentations

Here are the links to our weekly presentations, presented during the duration of the summer of 2015

  1. Week 1
  1. Week 2
  1. Week 3
  1. Week 4
  1. Week 5 - No presentation this week
  1. Week 6
  1. Week 7
  1. Week 8
  1. Week 9
  1. Week 10
  1. Week 11

People

  • Professor Anand Sarwate
  • Professor Roy Yates
  • Danny Ayoub
  • Kush Oza

Last modified 2 years ago Last modified on 08/18/15 17:57:23

Attachments (19)