Objective

The demand for video content is increasing day by day, be it in the cyberspace or in the field of broadcasting. And it’s not just any video; it’s High Definition (HD) video. These video files being large in size need compression and decompression, a job that is handled by a video codec.

What is h.264?

H.264 is one such video codec, which enables video compression. According to Wikipedia, “H.264 is one of the most commonly used formats for recording, compression and distribution of high definition video.” This project will implement encoding and decoding of a video stream using the h.264 codec

Why this project?

Being a student of Computer Science, I have had experience in programming but never got a chance to develop on hardware such as the Raspberry Pi. The idea of working with real world hardware, and knowing that this technology is used worldwide in Blu-ray disks as well as by website like YouTube, Vimeo and iTunes Store, motivated me further to take up this project.

Objectives of this project :

  • Research into video encoding and decoding
  • Learn more about video streams
  • Get familiar with Raspberry Pi
  • Learn about h.264 video codec
  • Develop an H.264 video decoder using Raspberry Pi


More Information


Strategy

During the implementation phase, my strategy is to first implement a video decoder on Raspberry Pi that is not connected to the Internet. The video content will be stored on the SD card and decoded from there itself. In the next phase, I will start decoding videos from an Internet stream.

Hardware and Software

The hardware i.e. Raspberry Pi, is available in the market and will be accommodated in the project budget. The programs will be written in C language on Raspbian OS, which is an open source Linux based OS. The coding will be done on Raspbian OS installed on a virtual machine.

Implementation Phases

The project is divided into four phases. The first two phases are dedicated to the development of the video decoder. In the third phase, the decoder will be tested for bugs and feature enhancements will take place. In the final phase the implementation will be tested.