Desktop vide recording and streaming

Desktop vide recording and streaming

Summary

This project is going to develop low CPU consumption desktop video recording and streaming applications. With these two applications, manager can record and see what their employees are doing during their work time. Similar techniques have been broadly used in game broadcasting websites like, Panda TV, Twitch.

Objective

The project aims to develop a low CPU consumption desktop video recording and streaming technique.

The intermediate goal is to develop two simple demos of recorder and player, which only have the basic functions without consideration of the CPU consumption and delay. They can be tested separately.

The ultimate goal is make the make the delay less than 25 milliseconds and the CPU consumption as low as possible. Also the ultimate version of player includes the playback and fast forward functions. These two applications can work well together.

Problem Statement

As this is a project focusing more on implementing than researching. And there are already quite a few similar applications in the market, like airplay, chrome cast, twitch, which are doing really good job. The meaning of this project lies in the sharpening of desktop programming skills and self-learning skills. With all other applications developed by a big team, the biggest problem of the project is the efficiency. No chance for constructional mistakes is allowed. A good user case study and a clear product design are needed before the implementation.

Theoretical background

To implement the screen capture function, there are multiple ways to use:

These three approaches will be evaluated in the coming month and the most appropriate one would be chosen.

The network protocol used in this project is the Real-time Transport Protocol (RTP). It is an end-to-end, real-time, transfer of streaming media. Comparing to traditional protocols, who focus on the reliability of data transfer, RTP puts more effort in the instantaneity.

The compression and distribution format chosen by this project is H264. It is he most widely accepted and adopted format in online and broadcast domain for content compression and distribution.

Scope

This project is a combination of existing techniques. It also contains making improvement to these techniques. These two applications support live broadcasting whose delay would be controlled to less than 25 milliseconds. But a specific time interval delay broadcasting is not supported. Also the video streaming application will only support a single video format which is sufficient for cooperation with the video recorder.

Prerequisites

The programming language is C++ and the deliverables are windows desktop applications. So basic C++ programming skills are needed, while knowledge of .NET is also needed with some function having better implementation with this language.

I choose Virtual Studio as the programming platform which is the very best IDE available with profiler, debugging and everything else I would like need. Getting familiar with this platform is also very important.

Before the implementation, some related techniques should be learned:

Deliverables

The deliverable would be two desktop applications. One is for video recording which can record screen activity, and send it to the other one via RTP protocol. The other one is for video streaming which could receive the video and stream it. Generally, these two applications would be implemented in separate computers.

Aproach

In this project, windows will be used as programming environment, because it is the standard operating system in most of the industries. The knowledge of windows desktop programming could be learned from the online tutorial given by Microsoft. It also provides the developer with a large base of APIs.

The four main techniques involved in this project also has much exposure on the internet. Find the resource to learn the techniques and also the way to implement them. In implement each technique, there may be several ways. All these methods should be evaluated before the best one being chosen. The suggestions from professors and other specialists in this area are also important, which could avoid wasting time in implementing in the wrong way.

Feasibility assessment

As the techniques are mature and there are a few existing applications in the market, this project is feasible based on the current understanding.

Project management info

This is an individual project with 3 parts to implement. Implement and test each part separately before combining them together. Keep the working diary which would be convenient for the further debugging.

Challenges

The challenges for this project are to:

View the schedule