Private:progress-sharangi

From NMSL
Revision as of 11:51, 14 June 2012 by Ssa121 (talk | contribs)

Summer 2012 (RA)

Course: CMPT894 (Directed Reading) bi-weekly report updated:10/06

Jun 15

  • Implemented a m3u8 based dynamic http streaming scheme utilising the rewriting functionality. Conceptually it works and I can play the video which is processed through the rewriting work flow. Following is an example playlist file with two version of a stream:
---bbb.m3u8---
#EXTM3U
#EXT-X-STREAM_INF:PROGRAM-ID=1,BANDWIDTH=149300
http://142.58.185.226:8080/m3u8/bbb_l11.m3u8 
#EXT-X-STREAM_INF:PROGRAM-ID=1,BANDWIDTH=137700
http://142.58.185.226:8080/m3u8/bbb_l10.m3u8
---bbb_l11.m3u8---
#EXTM3U
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:5
http://142.58.185.226:8080/AvcRewriter.php?file=bbb_l11_part_01.ts
#EXTINF:5
http://142.58.185.226:8080/AvcRewriter.php?file=bbb_l11_part_02.ts
  • Configuring C++ applications did not work with either of the three servers(apache, nginx, lighttpd) I tried. Therefore I implemented a basic PHP application with Apache to call the rewriter binaries on server. This solution works and I can play the video on VLC but the calls to each video chunk file take some time to process so the playout is not smooth.
  • There are some components of the delay that we did not consider before:
    • The SVC substream extraction process has to be added to the rewriter module to make the streaming adaptive. This adds some delay as the extraction process needs to go through the entire file and this cannot be done in conjunction with the rewriting on the fly.
    • The second component is the MUX-ing software(ffmpeg) which is currently taking lot of time(probably because it is initializing lot of resources which are not required for our particular case. The solution to this

Jun 10

  • I am trying to implement the connection between web server and C++ application which is turning out to be more difficult than expected. I tried with two low footprint servers nginx and lighttpd but the mechanism is not working due to their asynchronous request processing. Currently trying with Apache.
  • As per the MPEG-DASH standard the content has to be created before creating the MPD file which rules out the possibility of using MPEG-DASH with on demand avcRewrite. One option is to use the .m3u8 playlists that have simpler format with explicit urls for file chunks. In that case we have to mux the video into TS.
  • I did some modifications and obtained the following table for large number of layers. As expected, the storage requirement for AVC becomes much higher than SVC. One interesting observation is that for the top two layers SVC files are actually smaller in size than their AVC versions.
    LayerID   Resolution   Framerate   Bitrate 	SVC(KB)	AVC(KB)
 ============================================
         2     352x288      12.0000       28.20       446	  483
         3     352x288      24.0000       31.10       487	  559
         4     352x288        3.0000       60.50       938	  726
         5     352x288        6.0000       65.10     1027	  811 
         6     352x288      12.0000       69.50     1116	  903 
         7     352x288      24.0000       76.00     1204	1004
         8     352x288        3.0000     115.80     1954	1269
         9     352x288        6.0000     126.00     2149	1428
       10     352x288       12.0000     134.40     2330	1580
       11     352x288       24.0000     145.80     2499	1728
 ============================================
                                                                              10491(4.2x)

May 28

  • Created 1min of AVC video chunks and encoded into mp4 files.
  • Storage calculations (bytes) for a 1 min CIF sized BigBuckBunny Video split into 5sec chunks:
    • Size of the raw SVC files: 2565058
    • Size of raw AVC files: 1776821(L3) + 902641(L2) + 438308(L1) = 3117770 (~21% extra compared to SVC)
    • Audio and container overhead SVC : 4366459 - 1776821 = 2589638
    • Est. size of playable SVC content: 2565058 + 2589638 = 5154696
    • Size of playable Simulcast content: 4366459 + 3580554 + 2535836 = 10482849 (~ 100% extra compared to SVC, but this will probably decrease with larger picture size or video length when the video data dominates the size).
    • Audio encoded in AAC stereo using NeroAAC for Linux and is same for both the SVC and simulcast versions.
    • Video encoded in 3 layer rewritable SVC with layer QPs: 36, 32, 28
    • AVC files for simulcast are created from the SVC file by first extracting a substream and then rewriting it.
    • ffmpeg and MP4Box is used for muxing the AVC and AAC files into an MP4 file with the following commands(Note: currently this is the only command that is working. Muxing the AVC file with MP4Box tools do not work):
   $>ffmpeg -i ../avc/BBB_CIF_24fps_1min_GOP01.h264 -s 352x288 -r 24000/1001 -t 00:00:05 bbb_muxed_01.mp4
   $>MP4Box -add ../aac/bbb_01.mp4 bbb_muxed_01.mp4
  • Currently Investigating:
    • JSVM layer extracter does not work with rewriter. E.g. I have a 3 layer rewritable SVC file. When I rewrite all 3 layers, the our put is playable in VLC. When I extract 2 layers and then rewrite, the output is no longer usable. It does not show any difference in output compare to the 3 layer files in VLC player or ffmpeg. It has severe problems with audio synchronization and drifting.
    • Interface between web server and media files. Is may be better idea to integrate a HTTP server into the C++ media adaption/rewriting application than to implement link code between standard http server and the media application through php/CGI. The later is slower.
  • Waiting for: Kaushik's update on the DASH setup. Earlier sent him a set of mp4 files for creating DASH content and verifying the setup with it.
  • Challenges: The JSVM encoder is very slow. took me 3 days to encode 1 min of CIF video.


May 15

  • Currently working on creating chunked content from YUV files and composing the DASH MPD file.
  • Tested that video chunks created by splitting YUV files and AVC rewritten can be played back in VLC media player. Also investigated that the rewrite works with layer dropping.
  • Storage implications of splitting YUV file instead of splitting compressed file for parallel processing :

Video: bridge_far.yuv, CIF(352x288), 30fps, 900 frames(30s) Encoding: 3layer SVC then rewritten to AVC, GOP size 16, YUV split into 2s chunks Size of single compressed video of 30s = 723191b = 706kb (Note that this contains only one IDR frame) Size of 15 videos of length 2s each = 829674b = 810kb.


Spring 2012 (TA + RA)

Course: CMPT886 (Multicore Systems)

January

Jan 27:

  • Conducted a survey of exiting results on SVC to AVC rewriting. While it has been reported that the re-writing process performs about 80% faster than the cascaded trans-coding process on a CPU, there are not many results on the feasibility of streaming implementation of the technique. Sablatschan et.al. have reported that the real time rewriting is not feasible for resolutions more than 480x320 videos using a quad core 3GHz processor. This leads to two directions for exploration: (1)explore the JSVM code to find better ways of doing the rewriting in parallel hardware and (2) using GOP distribution based approach on cloud to explore possibility of improving parallel performance. (1) has been extensively studied in the context of parallel encoders and decoders. (2) has scalability issues because it needs to buffer the GOPs before distributing them.
    • One idea here is to distribute the pictures instead of GOPs which will increase the achievable degree of parallelism at the cost of increased picture management overhead.
    • Another idea is to use the GOP based parallel rewriting at the server where the entire video is available. Then there will e no need to buffer the GoPs. Need to check whether this has been already done.
  • Looked at some possibilities to implement scalable video streaming. Not many streaming server applications support SVC. Will look info DASH related implementations.


Jan 10:

  • Started exploring the problem of video trans-coding in cloud
  • Started exploring the feasibility of implementing a cloud test-bed using Openstack.

Other

  • Courses: CMPT 886 (Multicore Systems)
  • TA : CMPT 371 , CMPT 379

Previous work


Spring 2011 (RA)

April

  • April 8
    • Working on the simulator for hybrid uni/multicast experiments. Taking longer than expected, may miss the MM'11 deadline

March

  • Mar 28:
    • Updated tech-report on hybrid multicast-unicast link
  • Mar 7:
    • Tech-report on hybrid multicast-unicast here
    • Working on the formulation for mobile patching scheme. Derived an expression for the bandwidth requirement and energy consumption of all-unicast and adaptive-patching schemes. Need to verify correctness analytically.
    • Working on numerical examples of the mobile patching scheme.
    • Documentation GENI-WiMAX project details.

Feb

  • Feb 28:
    • Reviewed the existing literature and identified the main challenges in adapting video streaming schemes to wireless networks. Identified four major schemes which seem promising : Skyscraper Broadcasting, Hierarchical Stream Merging, Harmonic Patching and Piggybacking.
    • Explored Skyscraper Broadcasting scheme and found it to be unsuitable.
    • Documentation of the survey.
  • Feb 11: Meeting with Saleh
    • Saleh to survey energy efficiency techniques in ad-hoc/sensor network domain and possible adaptation
    • Som to survey Internet VoD results and look for possible adaptation in the wireless domain
    • Meet on Feb 15 to discuss progress and decide on the first draft of one or two problems
    • (If time) Saleh to look at WiMAX model in OPNET to see if it can be used for experiments
  • Investigating wireless multimedia streaming in muticast/unicast mixed mode networks

Jan

  • Investigating cloud computing for video trans-coding, video mining and mobile video applications
  • Survey report on WiMAX/LTE testbed design options here
  • Report on current status of DVB-H testbed and design of EPG feature here

Fall 2010 (RA)

  • Poster/Demo: Efficient Multiplexing for Mobile Video Streaming (CONNECT'10)