Netmanias Technical Document : Analysis on Microsoft Sliverlight Smooth Streaming (SSS)
2011년 8월 30일
NMC Consulting Group (
[email protected])
www.netmanias.com www.nmcgroups.com
About NMC Consulting Group
Copyright ⓒ 2002-2011 NMC Consulting Group. All rights reserved.
Page 2
..
.
Origin Server
(IIS Media Server)
CDN
(optional)
2sec
Player
(Silverlight)
Fragmented MP4 file
[Avatar_2750000.ismv]
Fragmented MP4 file
[Avatar_2040000.ismv]
Fragmented MP4 file
[Avatar_350000.ismv]
Client Manifest
file [Avatar.ismc]
Media Assets (Disk Storage)
...
Decoding
(VC-1, H.264)
A Chunk = a
single GoP
1 0 2
Manifest Request for Avatar [Avatar.ism]
Manifest Response [Avatar.ismc]
Fragment Request (Avatar.ism/350000/Video=0s)
HTTP PDL (Fragment 0)
Fragment Request (Avatar.ism/2040000/Video=2s)
HTTP PDL (Fragment 1)
Fragment Request (Avatar.ism/2750000/Video=4s)
HTTP PDL (Fragment 2)
Fragment Request (Avatar.ism/2040000/Video=6s)
HTTP PDL (Fragment 3)
3
Smooth Streaming
Start Quickly
(Lowest Bit-Rate)
Improve Quality
Congestion
Detection
Improve Quality
Bitrate (f)MP4 file
2750000 Avatar_2750000.ismv
2040000 Avatar_2040000.ismv
...
350000 Avatar_350000.ismv
1. Transcoding (VC-1 or H.264)
Multi-Bite Rate/Multi-Resolution
2. generates a single contiguous Fragmented MP4 file
per bit rate
3. generates a Server Manifest file and
Client Manifest file
· 2750000bps
· 1280x720
· VC-1
...
Fragmented MP4 file
[Avatar_2750000.ismv]
Fragmented MP4 file
[Avatar_2040000.ismv]
Fragmented MP4 file
[Avatar_350000.ismv]
· 2040000bps
· 1056x592
· VC-1
· 350000bps
· 320x176
· VC-1
Server Manifest file [Avatar.ism]
Client Manifest file [Avatar.ismc]
Encoder
Fragmented MP4 file MP4 fragment (=Chunk)
File Type (ftyp)
Movie Metadata (moov) Movie Fragment Random Access (mfra)
Fragment (Chunk)
MPEG-4 Part 14 (ISO/IEC 14496-12) File Format
...
...
...
Fragmented MP4 files
...
...
...
...
Manifest files
...
...
...
Movie Fragment (moof) Media Data (mdat)
3 2 1 0
cn=0
d=2sec
cn=1
d=2sec
cn=298
d=1sec
cn=0
d=2sec
cn=1
d=2sec
cn=298
d=1sec
cn=0
d=2sec
cn=1
d=2sec
cn=298
d=1sec
cn=0
d=2sec
cn=1
d=2sec
cn=298
d=1sec
cn=0
d=2sec
cn=1
d=2sec
cn=298
d=1sec
cn=0
d=2sec
cn=1
d=2sec
cn=298
d=1sec
0
1
2
3
www.netmanias.com Copyright ⓒ 2002-2011 NMC Consulting Group. All rights reserved.
Netmanias Technical Document: ANALYSIS ON MICROSOFT SMOOTH STREAMING
Server Manifest
file [Avatar.ism]
C
S
C S
C S
Page 3
Manifest Response
<SmoothStreamingMedia MajorVersion=\"1\" MinorVersion=\"0\" Duration=\"5965419999\">
<StreamIndex Type=\"video\" Subtype=\"WVC1\" Chunks=\"299\" Url=\"QualityLevels({bitrate})/
Fragments(video={start time})\">
<QualityLevel Bitrate=\"2750000\" FourCC=\"WVC1\" Width=\"1280\" Height=\"720\"
CodecPrivateData=\"250000010FD3BE27F1678A27F859E804508253EBE8E6C00000010E5AE7F840\" />
<QualityLevel Bitrate=\"2040000\" FourCC=\"WVC1\" Width=\"1056\" Height=\"592\"
CodecPrivateData=\"250000010FD3BE20F1278A20F849E80450823E414DD1400000010E5AE7F840\" />
<QualityLevel Bitrate=\"1520000\" FourCC=\"WVC1\" Width=\"848\" Height=\"480\"
CodecPrivateData=\"250000010FCBAE1A70EF8A1A783BE8045081AE62F3F7400000010E5AE7F840\" />
<QualityLevel Bitrate=\"1130000\" FourCC=\"WVC1\" Width=\"704\" Height=\"400\"
CodecPrivateData=\"250000010FCBA215F0C78A15F831E8045081A27BD635C00000010E5AE7F840\" />
<QualityLevel Bitrate=\"845000\" FourCC=\"WVC1\" Width=\"576\" Height=\"320\"
CodecPrivateData=\"250000010FCB9A11F09F8A11F827E804508199C94077400000010E5AE7F840\" />
<QualityLevel Bitrate=\"630000\" FourCC=\"WVC1\" Width=\"448\" Height=\"256\"
CodecPrivateData=\"250000010FCB920DF07F8A0DF81FE804508113396020C00000010E5AE7F840\" />
<QualityLevel Bitrate=\"470000\" FourCC=\"WVC1\" Width=\"368\" Height=\"208\"
CodecPrivateData=\"250000010FC38E0B70678A0B7819E80450810E5747B6C00000010E5AE7F840\" />
<QualityLevel Bitrate=\"350000\" FourCC=\"WVC1\" Width=\"320\" Height=\"176\"
CodecPrivateData=\"250000010FC38A09F0578A09F815E80450808AADEACF400000010E5AE7F840\" />
<c n=\"0\" d=\"20000000\" />
<c n=\"1\" d=\"20000000\" />
.....
<c n=\"297\" d=\"20000000\" />
<c n=\"298\" d=\"5000001\" />
</StreamIndex>
<StreamIndex Type=\"audio\" Subtype=\"WmaPro\" Chunks=\"299\" Url=\"QualityLevels({bitrate})/
Fragments(audio={start time})\">
<QualityLevel Bitrate=\"64000\"
WaveFormatEx=\"6201020044AC0000451F0000CF05100012001000030000000000000000000000E0004
2C0\" />
<c n=\"0\" d=\"20433560\" />
....
<c n=\"297\" d=\"20433560\" />
<c n=\"298\" d=\"4393197\" />
</StreamIndex>
</SmoothStreamingMedia>
Fragment Response
TCP (Media Data)
TCP (Media Data)
TCP (Media Data)
….
HTTP /1.1 200 OK (video/mp4)
Fragment Request (HTTP Get)
Request Method: GET
Request URI: /mediadl/iisnet/smoothmedia/Experience/BigBuckBunny_720p.ism/
QualityLevels(350000)/Fragments(video=0)
Request Version: HTTP/1.1
Manifest Request (HTTP Get)
Request Method: GET
Request URI: /mediadl/iisnet/smoothmedia/Experience/BigBuckBunny_720p.ism/Manifest
Request Version: HTTP/1.1
Netmanias Technical Document: ANALYSIS ON MICROSOFT SMOOTH STREAMING
Page 5
2. Fragment Request (Video Chunk)
3. Network Throughput
4. Recevied Byte (Video)
Video Chunk
Audio
Chunk
1000000
500000
www.netmanias.com Copyright ⓒ 2002-2011 NMC Consulting Group. All rights reserved.
15개 정도의 Chunk를 Back-to-back Request함 (Buffering State)
어느 정도 버퍼가 쌓이면 Periodic Request (Steady State)
매 Chunk는 Progressive Download (2초 짜리 Chunk를 2초 동안 받는 것이 아니라
Line Rate으로 순식간에 받는 다. 본 테스트에서는 40~50Mbps로 0.x초안에 한
Chunk를 다 받음을 확인할 수 있었다.)
2 sec
Chunk Request
1. Playout BW
2.75 Mbps
2.04 Mbps
1.52 Mbps
1.13 Mbps
845 Kbps
630 Kbps
470 Kbps
350 Kbps
http://www.iis.net/media/experiencesmoothstreaming
Wireshark
Capture
Netmanias Technical Document: ANALYSIS ON MICROSOFT SMOOTH STREAMING
0s 2s 4s 6s 8s 10s 12s 14s 16s 18s 20s 22s 24s 26s 28s 30s 32s 34s 36s