IPTV: Internet Protocol Television Streaming Television Over the Internet
By: Miguel Amador, Grae Cullen, Kevin Nadeau, Phil Napieralski, Steven Steffen, Wenjun Zeng
IPTV is digital television broadcasted over the internet. Currently there are many media players that can be used to stream video on demand or used for live streaming. We took one media player, VLC, and tried to modify the player in three ways. First, we worked on bit stream switching between videos of different qualities. Second, we looked at different interpolation algorithms and then how to apply that into the bit stream switching process. Third, we worked on making the Picture in Picture (PiP) and multichannel preview more user friendly and accessible.
The various video tracks can be thought of as railroad tracks. Consider you are riding a train and you come to a junction (in this analogy, the junction can be thought of as an SP or SI frame), after the junction you switch to a different railroad track. This switching railroad tracks is the same as switching video tracks. We are only using one a time, but we can switch whenever we want. By viewing the picture below, you can more understand what the process looks like.
Although VLC media player does come with its own built in PiP implementation known as "Mosaic", it is very clumsy and sluggish. There are two ways of using VLC's mosaic, one with the command line, and the other with the VLC web (HTTP) interface. VLC's mosaic, on the left, with the necessary command line parameters, this does not include the configuration file. The wizard, on the right, provides an easy interface but still is hard to work with. Both of these interfaces require a restart of VLC to switch the corner videos and the main video in the middle.
The following pictures describe the process of motion compensation and how movie frames are typically encoded. That is, each frame is not necessarily a full image. Each frame merely contains the difference between itself and previous frames.
Interpolation is the process of resizing images, either smaller or larger, while reducing the effects of blurring or other distortions as much as possible. For the interpolation part of our research we investigated into which algorithms would work best and then looked into how we could switch bit streams of different resolutions with minimal distortion. We used VLC to try to test this theory with creating and deleting decoders for the different resolution streams.
Therefore, with these difficulties and immense learning curve, we decided that a much more user friendly version that allowed dynamic video and file switching was necessary. This dynamic PiP can be manipulated without causing a new instance of VLC to be created.
In the picture below, we have our interpolation process and how it works when it is implemented. The last frame of the smaller resolution video, on the left, will be interpolated to the bigger resolution.
Macro Blocks - Each of these sections are matched with a section in the next frame. Only the motion vectors need to be saved, rather then resending the whole picture.
Where the macro blocks move.
The last frame is considered the reference frame and most frames in a video use that last frame as a guide to minimize distortion of the video.
What is added to the predicted, in order that to make the prefiltered out put. The picture is then filtered to remove blockiness, and create the final image.
The final result
After researching which interpolation algorithms to use, we came decided that using a catmull-rom cubic spline would produce the best results. However, attempting to recreate that spline proved difficult. The linear and nearest neighbor algorithms don’t do as well but are faster.
Interpolation with Linear Algorithm
In this project we worked on researching to solve some of the issues that arise with IPTV, including bitstream switching, resolution interpolation switching, and a gui implementation that utilizes PiP and multi-channel preview. Our tools created for IPTV were all based on VLC media player. This assists the research project by providing more insight and more importantly tools that can be used by future researches to help improve the IPTV project.
Bit Stream Switching:
Bit stream switching is the process of switching between one bit stream to a similar one of a different quality, thus increasing or decreasing the needed bandwidth. The tool we used to switch bitstreams was based on VLC media player. The method we used for bitstream switching was to utilize the fact that the .mp4 file container can have more than one video track. Think of the .mp4 container like a box. In general, when we look at the box, we can see various things that describe where it came from and what it is. This shipping label is akin to the information you will find in the header of the .mp4 container. Now, when you open the box, you might see various items wrapped in bubble wrap. Each item's bubble wrap is akin to the .mp4 container's header information for each track. The items therein can be considered the tracks of our file container.
National Science Foundation Dr. Wenjun Zeng University of Missouri Engineering
Interpolated with Nearest Neighbor Algorithm Interpolation with Our CatmullRom Algorithm