1 / 24

IPTV

IPTV. By Miguel Amador, Grae Cullen, Kevin Nadeau, Phillip Napieralski , and Steven Steffen. Primary Objectives. Develop a tool that facilitates switching bitstreams in real-time given a switching time table Research and develop algorithms that facilitate switching resolutions

coyne
Download Presentation

IPTV

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IPTV By Miguel Amador, Grae Cullen, Kevin Nadeau, Phillip Napieralski, and Steven Steffen

  2. Primary Objectives • Develop a tool that facilitates switching bitstreams in real-time given a switching time table • Research and develop algorithms that facilitate switching resolutions • Implement a GUI for IPTV and then use that GUI to facilitate running PiP and multichannel preview.

  3. Outline – Stream Switching • NAL Unit Streams • SPS/PPS Data • Stream Switching • Static Stream Switches • Dynamic Stream Switches • Decoding the Switch (FFMPEG) • Allocation Issue • Types of Switches • Decoding the Switch (VLC) • Progress • Issues

  4. NAL Unit Streams • SPS – Sequence Parameter Set • PPS – Picture Parameter Set • NAL units rely on the previous SPS/PPS for decoding

  5. Stream Switching • NAL Unit Stream (H.264 files.) • Static Switching • Appending H.264 files • Dynamic Switching • RTSP request

  6. Decoding the Switch (FFMPEG) • Allocating SPS/PPS structure • I-Frame switching • No drift • P frame switching • Drift • I-Frame Switching • Resolution switching • Drift • Resolution Switching

  7. Decoding the Switch (VLC) • Compiling • -with-ffmpeg-tree=/our_dir/our_ffmpeg_dir/ • Video Buffer?

  8. How to use git • git commands: • git clone git://git.videolan.org/vlc.git • git commit –a or git add ./filepath/filename then commit • All changes need to be “commited,” this will make sure it is never overwritten • To commit all the files that you changed automatically, use the former • git format-patch -o patches origin • Patching VLC’s source • Copy the patch to your vlc/ directory • Patch –p1 <REU2008_btrsw_mod.patch • If patch doesn’t work  Extract the .zip to VLC directory

  9. Compiling VLC • Problems with Fedora • Firewall issues • Yum repositories periodically down • Head VLC developer used Ubuntu 8.04… • Tip: Use Ubuntu • Powerful apt-get tool makes resolving VLC’s dependencies easier and less time-consuming • apt-get install vlc-devel • apt-get build-depvlc • After that… • ./bootstrap • ./configure –-enable-live555 ( --enable-debug ) • make && sudo make install

  10. How the modification works SET_PARAMETER rtsp://<ip:port>/fol RTSP/1.0 track: <num> Server module forwards request to the MP4 demuxer, which then switches tracks

  11. Further Considerations • Resolution switching • Make the video track list dynamic • Get server to send an RTSP message with # of tracks • Client side: add a var_Change( … ) to the “video-es” variable in VLC for each track there is • Cross-compile VLC mod so that it works under Windows, Mac, etc… (already supported) • Create a standard for the multitrack MP4 files with different bitrates/resolutions

  12. Creating a multitrack mp4 file • handbrake • Useful to rip DVDs at various qualities with H264 • Make sure to include bframes=1 in x264 options tab • mpeg4ip tools • mp4creator • mp4creator –create=“track1.264” output.mp4 • mp4creator –create=“track2.264” output.mp4, etc… • mp4info

  13. Creating a VoD server • ./vlc –-rtsp-host 0.0.0.0:1234 –I telnet • telnet 127.0.0.1 4212 <default pw: admin> • Load <config name>.vlm or input manually • new video1 vod enabled • setup video1 input “<filepath>/<filename>.<ext>“ • setup video1 mux mp2t  sets encapsulation method • For a client to connect: • ./vlc rtsp://<server_ip>:<server_port>/video1

  14. Interpolation with Linear Algorithm Original image Interpolated with Nearest Neighbor Algorithm Interpolation with Our Catmull-Rom Algorithm

  15. RGB Values from the original picture and interpolated images

  16. Resolution Switching in VLC

  17. Ffmpeg: making it green

  18. Effects while playing

  19. The Problem • Looked into VLC’s two built in implementation of PiP and Multi-channel preview, called “Mosaic”. • VLC’s two implementations are the main command line interface, and the mosaic wizard in the web interface. • After some working with VLC’s methods, I discovered that both methods they use are undependable and static, meaning that once the video is started, it cant be changed without completely reseting.

  20. VLC Command Line Interface The picture illustrates the main VLC interface accompanied by the necessary command line execution to implement VLC’s built in Mosaic. This is a very clumsy way of achieving the desired results, and it also has a large learning curve. Also, this method does not allow for manipulation of the videos individually within the program. The only way to change the file playing on a certain video picture, the entire command must be reset from the beginning

  21. Mosaic Wizard The mosaic wizard is the only method besides a long stream of command line text to get PiP, and even then, it has a few flaws. One thing is, the pictures can only be blocked in an edge to edge square, they cant be spread out, or even just diagonal to each other. Therefore, one cant get for instance, one picture in each corner of the larger one, because they aren’t directly adjacent to one another. This method, again, does not allow for in-play manipulation.

  22. The First Attempt The C++ Approach When using the C++ approach, we were attempting to make an interface that would at the click of a button implement the VLC command line Mosaic, thereby diminishing the learning curve. The problem was that each time this was attempted, a new instance of VLC was started. This would cause there to be an unlimited number of VLC’s open at once, and this was extremely undesirable. It was also still static, so we still couldn’t change files during playback. • Since both of these methods are slow and undependable. A new method was necessary. • We tried several methods of attempting to accomplish this, including writing a C++ program to implement the regular mosaic functions

  23. The Final Solution The VLC PiP Interface • The final solution came with the discovery of the VLC C# support, that allowed a person to make a VC# application that can embed VLC into it. This allowed us to achieve both of our goals, an easily useable PiP interface, as well as dynamic support to change files, including support for flipping between two running pictures.

  24. Acknowledgements • Dr. WenjunZeng • Lina Dong • Wei Liu • Yingan Zhu

More Related