Top Banner
Video Delivery Methods Yossi Cohen
91

Video delivery methods

May 16, 2015

Download

Technology

Yossi Cohen

Review of Progressive Download and HTTP streaming methods including HLS and MSS. Wireshark analysis of PD and MSS.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Video delivery methods

Video Delivery Methods

Yossi Cohen

Page 2: Video delivery methods

Intro: “Legacy” Methods

Page 3: Video delivery methods

Streaming Streaming methods

RTP/RTSP RTMP Real MS WMV/ASF

Proprietary and Fragmented Seek-ability – supported Server side – proprietary technology (FMS) Cache-ability – requires special servers for streaming User experience – very good Cost – high

Page 4: Video delivery methods

Progressive DownloadSimple Utilizing existing protocols & servers (HTTP) Media file is prepared: metadata up front Playback - after metadata is received Cache-ability - supported Seek-ability – very limited support Poor user experience - seek, multi-rate Waste of bandwidth when not watched fully Low cost

Page 5: Video delivery methods

Pseudo Streaming Media is sent as a regular file like Progressive DW Server must understand how the media is structured Playback: after metadata is received Existing protocols

Non standard server Non standard client component

Cache-ability – Limited ! Seek-ability – supported User experience – better than PD, support seek. Waste of bandwidth when not watched full

Page 6: Video delivery methods

HTTP Streaming Intro HTTP Streaming offers the advantages of:

Progressive download in terms of Cost Standard Server Scalability Standard client components (OSMF)

Streaming in terms of User experience Seek-ability of streaming

Page 7: Video delivery methods

Delivery Methods Summary

Page 8: Video delivery methods

Progressive Download Session Analysis

Page 9: Video delivery methods

Flash Video

Page 10: Video delivery methods

Progressive Download Uses file download from an HTTP web server. Uses HTTP GET request Flash player enables file playback while the download is

still in progress. The ability to be played while the file is being

downloaded is in the wrapper (container) of the file.

Page 11: Video delivery methods

PROGRESSIVE DW FLASH SESSION

Page 12: Video delivery methods

Request from YouTube First stage is to connect to YouTube Server with the

HTML page request. Source: 192.168.2.102 Destination: 72.125.39.138 GET /watch?v=lAl28d6tbko&feature=popt00il00

Notice that the request passes throw server 72.125.39.138 witch is identified as a Google server

Page 13: Video delivery methods

Request from YouTube The Request itself is pointed to the host name (from the

HTTP message), wich is YouTube HTTP server. The HTTP server provides only the HTML page of the

request Host: www.youtube.com

Page 14: Video delivery methods

1) Request HTML Page2) HTML response

Browser192.168.2.102

Web Server72.125.39.138

Session Progress

Page 15: Video delivery methods

Requesting the Flash Video Player The Player is then requested automatically by the Flash

client – the information is retrieved from the query string (in bold).

<script> (function() {var isIE = /*@cc_on!@*/false;var swfHTML = (isIE) ? "<object height=\"38" + "5\" width=\"64" + "0\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" id=\"movie_player\" ><param name=\"movie\" value=\"http:\/\/s.ytimg.com\/yt\/swf\/watch_as3-vfl157163.swf\"><param

name=\"flashvars ….})();</script>

*note this is only a fragment of the query string (located in var swfHTML )

Page 16: Video delivery methods

Session Progress

Browser192.168.2.102

Web Server72.125.39.138

File Server82.80.222.83

1) Request HTML Page2) HTML response3) Request the Flash

Player4) Flash Player response

Page 17: Video delivery methods

Requesting of Player Models The swf file that contains TAGS to information that the

player needs. http://s.ytimg.com/yt/swf/watch_as3-vfl157163.swf

The SWF can be analyzed with swfmill. This can help locating the TAG’s inside the file.

For example: the tags containcom.google.youtube.ui.QualityButton_HqOffIcon_dataClass 1 com.google.youtube.ui.WatchEndScreen_replayIcon_dataClass 2 com.google.youtube.ui.QualityButton_HqOffIcon 3

Page 18: Video delivery methods

Request from YouTube The Flash Player requests the model information from

the CDN server. YouTube uses many CDN around the world. Source: 192.168.2.102 Destination: 212.179.74.181

GET/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0dWRVZSUl9FSkNNNl9OTFZB&fexp=905700%2C902904&algorithm=throttle-factor&itag=34&ipbits=0&burst=40&sver=3&expire=1270674000&key=yt1&signature=B20512CB5B62A0FCEA5D15EFF56AB35B35524614.15CDEF403DDDC9716E51EBB108CBA7D7CEFD7D98&factor=1.25&id=940976f1dead6e4a&

Page 19: Video delivery methods

Request from YouTube The host name is different too. Notice that this is a IP

located in Israel (host: bzq-82-80-222-82.red.bezeqint.net) – this is a Proxy.

Page 20: Video delivery methods

Request from YouTube Notice that this is a different server: IP: 82.80.222.82 The host name is different too. Notice that this is a IP

located in Israel (host: bzq-82-80-222-82.red.bezeqint.net) – this is a Proxy.

Page 21: Video delivery methods

Request from YouTube The original host of the message is Googles CDN

server: Host : video-stats.video.google.com IP: 74.125.79.139

Page 22: Video delivery methods

Complete Session

Browser192.168.2.102

Web Server72.125.39.138

File Server82.80.222.83

FLV Server / CDN212.179.74.181

1) Request HTML Page

2) HTML response3) Request Flash

Player4) Flash Player

response5) FLV File Request

Flash Player192.168.2.102

Page 23: Video delivery methods

Modern Capture (Byte Ranges)

Page 24: Video delivery methods

Changes from Previous

Decision on request type (Standard / byte range( based on Request 204 replay

TCP timing using Tval Tsecr Algorithm definition in request “cburst”, “throttle” Byte range requests

Page 25: Video delivery methods

204 Request

Measures latency -> Input for request type mechanism

Page 26: Video delivery methods

Algorithm Request

Cburst / throttle depending on content requested Client side instead of server side control

Page 27: Video delivery methods

Byte Ranges

Page 28: Video delivery methods

HTTP Streaming common

Over HTTP Media Segments:

Complete media units Separate media types (A/V)

Segments alignment GOP Aligned Time Aligned

Description File Must hold segment time frame Must Hold bit rate information Might include Media description like resolution, codecs

Page 29: Video delivery methods

HTTP Streaming AppleMicrosoftAdobe

Page 30: Video delivery methods

HTTP Live Streamingby Apple

Page 31: Video delivery methods

Agenda System Overview Components Session

Page 32: Video delivery methods

Apple’s Note

Note: Many existing streaming services require specialized servers to distribute content to end users. It requires specialized skills to set up and maintain these servers, and in a large-scale deployment these servers can be costly. Apple has designed a system that avoids this by using standard HTTP to deliver the streams.

Page 33: Video delivery methods

System Overview

Page 34: Video delivery methods

Components Review Server

Encoder Segmenter

Distributer Basic HTTP Server

Client

Page 35: Video delivery methods

Server Receives Digital / Analog input stream Encodes / Transcode video/audio

H.264 Video AAC audio (HE-AAC or AAC-LC)

Encodes / Transcode audio only: MPEG-2 elementary streams, HE-AAC or AAC-LC

files, or MP3 files Encapsulate in MPEG2

Transport Stream Program Stream

Page 36: Video delivery methods

Segmenter All segments should be with the same duration All segments are placed in a separate file Creates Index file with references to segment files For protection, the Segmenter might encrypt each media

segment and create a key file

Page 37: Video delivery methods

Distribution Distribution system is a regular HTTP Server Could be Apache or small embedded Server

Page 38: Video delivery methods

Files Segments – stored as *.ts files Index files – stored as *.m3u8 Index file format example:

#EXTM3U#EXT-X-TARGETDURATION:10#EXTINF:10,http://media.example.com/segment1.ts#EXTINF:10,http://media.example.com/segment2.ts#EXTINF:10,http://media.example.com/segment3.ts#EXT-X-ENDLIST

Page 39: Video delivery methods

Session types Live Stream Broadcast

Index file is continues updated Include a moving window of segments around “live”

part of the session Client should continuously refresh the Index file

VoD Session Index file static Includes ALL the segments of the file Enables “Seek” operation

Page 40: Video delivery methods

Multi-bitrate multi–device support Multi-bitrate is enabled via multiple index files Index files are pointed by a global index files Client can select a stream according to:

Device properties Available bit rate

This method is less efficientthan Silverlight Global File

Page 41: Video delivery methods

Test yourself1. What are the two Live streaming file types?2. What is the role of the Segmenter?3. On which delivery protocol is the live streaming based?

Page 42: Video delivery methods

Silverlight Smooth Streaming

Movi

ng to

DASH

Page 43: Video delivery methods

SILVERLIGHT INTRODUCTION

Page 44: Video delivery methods

Smooth Streaming

•Microsoft’s implementation of HTTP-based adaptive streaming

•A hybrid media delivery method that acts like streaming but is in fact a series of short progressive downloads

•Leverages existing HTTP caches•Client can seamlessly switch video quality

and bit rate based on perceived network bandwidth and CPU resources

Page 45: Video delivery methods

Smooth Streaming Design

•Smooth Streaming File Format based on MP4 (ISO Base Media File Format)

•Video is encoded and stored on disk as one contiguous MP4 file▫Separate file for each bit rate

•Each segment is composed of a 1 or more GOP This allows easy fragmentation at key frames

•Contiguous file is virtually split up into chunks when responding to a client request

Page 46: Video delivery methods

Evolution•Previous versions of MS streaming divide

the file into many chunkc 0001.vid 0002.vid etc

•Problematic in caching, CDNs, CMS etc•Today all fragments of a file are contained

in a single bitstream container. Typically 1 fragment = 1 video GOP.

Page 47: Video delivery methods

SILVERLIGHT FILES

Containers & Configuration files

Page 48: Video delivery methods

MP4 File format MP4 has two format types

Disk Format - for file storage Wire format - for transport

Wire format enables easy CDN support and integration

Page 51: Video delivery methods

File extensions Media Files

*.ismv - Audio & Video *.isma – Audio only

Manifest Files *.ism – Server manifest. Describes to the server

Relation between tracks, bitrates & files on disk. Based on SMIL 2.0 XML format specification

*.ismc – Describes to the client the available streams, CODECS used, bitrates encoded, video resolutions, markers, captions. First file delivered to client. It’s the first file delivered to client (“SDP” like).

Page 52: Video delivery methods

Directory Structure

Manifest Files

Media file in different bitrates

Page 53: Video delivery methods

Manifest files VC-1, WMA, H.264 and AAC codecs Text streams Multi-language audio tracks Alternate video & audio tracks (i.e. multiple camera

angles, director’s commentary, etc.) Multiple hardware profiles (i.e. same bitrates targeted at

different playback devices) Script commands, markers/chapters, captions Client manifest Gzip compression URL obfuscation Live encoding and streaming

Page 54: Video delivery methods

ISM file sample<?xml version="1.0" encoding="utf-16" ?> - <!-- Created with Expression Encoder version 2.1.1206.0  --> - <smil xmlns="http://www.w3.org/2001/SMIL20/Language">- <head>  <meta name="clientManifestRelativePath" content="NBA.ismc" />   </head>- <body>- <switch>- <video src="NBA_3000000.ismv" systemBitrate="3000000">  <param name="trackID" value="2" valuetype="data" />   </video>- <video src="NBA_2400000.ismv" systemBitrate="2400000">  <param name="trackID" value="2" valuetype="data" />   </video>- <video src="NBA_1800000.ismv" systemBitrate="1800000">  <param name="trackID" value="2" valuetype="data" />   </video>

Page 55: Video delivery methods

ISM file sample- <video src="NBA_1300000.ismv" systemBitrate="1300000">  <param name="trackID" value="2" valuetype="data" />   </video>- <video src="NBA_800000.ismv" systemBitrate="800000">  <param name="trackID" value="2" valuetype="data" />   </video>- <video src="NBA_500000.ismv" systemBitrate="500000">  <param name="trackID" value="2" valuetype="data" />   </video>- <audio src="NBA_3000000.ismv" systemBitrate="64000">  <param name="trackID" value="1" valuetype="data" />   </audio>  </switch>  </body>  </smil>

Page 56: Video delivery methods

*.ISMC sample<?xml version="1.0" encoding="utf-16" ?> - <!-- Created with Expression Encoder version 2.1.1206.0  --> - <SmoothStreamingMedia MajorVersion="1" MinorVersion="0" Duration="4084405506">- <StreamIndex Type="video" Subtype="WVC1" Chunks="208"

Url="QualityLevels({bitrate})/Fragments(video={start time})">  <QualityLevel Bitrate="3000000" FourCC="WVC1" Width="1280" Height="720"

CodecPrivateData="250000010FD3FE27F1678A27F859E80C9082DB8D44A9C00000010E5A67F840" />

  <QualityLevel Bitrate="2400000" FourCC="WVC1" Width="1056" Height="592" CodecPrivateData="250000010FD3FE20F1278A20F849E80C9082493DEDDCC00000010E5A67F840" />

<QualityLevel Bitrate="1800000" FourCC="WVC1" Width="848" Height="480" CodecPrivateData="250000010FCBF81A70EF8A1A783BE80C908236EE5265400000010E5A67F840" />

  <QualityLevel Bitrate="1300000" FourCC="WVC1" Width="640" Height="352" CodecPrivateData="250000010FCBE813F0AF8A13F82BE80C9081A7ABF704400000010E5A67F840" />

Page 57: Video delivery methods

ISMC File - 2- <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" /> …..

<c n="0" d="20000000" />   <c n="1" 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="6201020044AC0000451F0000CF05100012001000030000000000000000000000E00042C0" />

  <c n="0" d="20433560" /> ....  <c n="297" d="20433560" />   <c n="298" d="4393197" />   </StreamIndex>  </SmoothStreamingMedia>

Page 58: Video delivery methods

SILVERLIGHT SESSION

Initiation and Flow

Page 59: Video delivery methods

Smooth Streaming Protocol Smooth Streaming Protocol uses HTTP [RFC2616] as its

underlying transport . The Server role in the protocol is stateless

Enabling (potentially) different instance of the server to handle client requests

Request can utilize any generic HTTP caches/proxies - > Lowering CDN costs

Page 60: Video delivery methods

Messages Smooth Streaming Protocol uses 4 different messages:

Manifest Request Manifest Response Fragment Request Fragment Response

All messages follow the HTTP/1.1 specification

Page 61: Video delivery methods

Messages FlowServer

Client

Manifest Request

Manifest Response

Fragment Request

Fragment Response

Fragment Request(s)

Page 62: Video delivery methods

Messages Manifest Request and Fragment Request message

MUST use the HTTP "GET" method, generated by the client.

Manifest Request and Fragment Request message use the HTTP Response messages.

Status-Code SHOULD be 200.

Page 63: Video delivery methods

Smooth Streaming Transport Protocol Session Details

Manifest RequestManifest Request

Manifest ResponseManifest ResponseVideo Fragment RequestVideo Fragment Request

Fragment ResponseFragment Response

Audio Fragment RequestAudio Fragment Request

Page 64: Video delivery methods

Session Details - Manifest Request

In order to initiate a presentation the Client MUST send the server a Manifest Request using the HTTP GET method.

Page 65: Video delivery methods

Session Details - Manifest Response

The Response is a ISMC Manifest file describing the session. - <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" />

…..

<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="6201020044AC0000451F0000CF05100012001000030000000000000000000000E00042C0" />

  <c n="0" d="20433560" />

....

  <c n="297" d="20433560" />

  <c n="298" d="4393197" />

  </StreamIndex>

  </SmoothStreamingMedia>

Page 66: Video delivery methods

Manifest Response reviewed We can see in the ISMC file that the server can support 8 different levels

of quality (bitrate) for the client can chose from between 2.75Mbit to 0.35 Mbit.

- <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" />

Page 67: Video delivery methods

Manifest Response – reviewed The client also receives the number of chunks for audio and video tracks

and the duration of each chunk so it can request the chunk which fits the desired position in the file

<c n="0" d="20000000" />

  <c n="1" d="20000000" />

  <c n="2" d="20000000" />

  <c n="3" 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="6201020044AC0000451F0000CF05100012001000030000000000000000000000E00042C0" />

  <c n="0" d="20433560" />

  <c n="1" d="19969161" />

  <c n="2" d="19969161" />

  <c n="3" d="20433560" />

  <c n="4" d="20433560" />

<c n="297" d="20433560" />

  <c n="298" d="4393197" />

  </StreamIndex>

  </SmoothStreamingMedia>

Page 68: Video delivery methods

Session Details – Fragment Request

Client-Server requests are based on RESTFull URLs:GET /mediadl/iisnet/smoothmedia/Experience/BigBuckBunny_720p.ism/QualityLevels(350000)/Fragments(video=0)

The URL includes reference to: Bitrate as QualityLevels which maps to a media file Fragment number

Page 69: Video delivery methods

Session Details – Fragment Response

The Server: checks “BigBuckBunny_720p.ism” server manifest file to find the

media file associated with the quality level(350000) Opens and parses the associated media file to get the chunk with

requested time offset (0). Sends the requested media fragment to the client as HTTP

response with status code set to 200

Page 70: Video delivery methods

Examplehttp://www.iis.net/media/experiencesmoothstreaming

Page 71: Video delivery methods

Adobe HTTP Streaming

Movi

ng to

DASH

Page 72: Video delivery methods

Thank you!

• Video Expert

• Lectures on Video / Android / VoIP

• Android Native Developer

More About me:

Yossi CohenYossi [email protected] [email protected]

+972-545-313092+972-545-313092

Page 73: Video delivery methods

Backup slides

Page 74: Video delivery methods

Adobe Solution main components

Page 75: Video delivery methods

Agenda Overview Components Files Session

Page 76: Video delivery methods

HTTP Streaming Intro HTTP Streaming offers the advantages of:

Progressive download in terms of Cost Standard Server Scalability Standard client components (OSMF)

Streaming in terms of User experience Seek-ability of streaming

Page 77: Video delivery methods

OverviewAdobe HTTP Dynamic Streaming is a solution that allows you to stream live and on-demand content over HTTP to Adobe Flash Player. When content streams over HTTP, clients can seek quickly to any location. HTTP Dynamic Streaming supports adaptive streaming, DVR functionality, and Adobe Flash Access protection (DRM).

Page 78: Video delivery methods

COMPONENTS

• Content Ingest• Server• Client

Page 79: Video delivery methods

Main components Preparation

File Packager Live Packager for HTTP Dynamic Streaming

Server Apache module (HTTP Origin Module) Flash Access

Client Player with OSMF classes Flash Player version 10.1+ Air 2.0+

Page 80: Video delivery methods

Ingest- File Packager•A command-line tool •Used for converting offline content to formats

required for Adobe HTTP streaming •Translates on-demand media files into

fragments and writes the fragments to F4F files.

Page 81: Video delivery methods

Ingest - Live Packager• The Live Packager for HTTP Dynamic

Streaming is part of Adobe Flash Media Server.

•The server ingests a live stream over RTMP and translates it into F4F files in real-time.

•The built-in Apache HTTP Server uses the HTTP Origin Module to deliver the live content over HTTP.

Page 82: Video delivery methods

Server - Apache module (HTTP Origin)•Extension to Apache HTTP Server version

2.2. •Enables processes of Adobe Files:

▫F4F, F4M,F4X ▫.bootstrap and ▫.drmmeta

•Flash Media Interactive Server 3.8 includes Apache HTTP Server.

Page 83: Video delivery methods

Server - Flash Access

• DRM Server • Flash Access delivers protected

media to Flash Player• For content protection, both File

Packager and Flash Media Server are required to package and encrypt the content

Page 84: Video delivery methods

Client - OSMF classes• The OSMF Player uses the

ActionScript 3.0 NetStream.appendBytes() API to deliver data to Flash Player.

•OSMF is a robust framework designed to deliver high-quality video.

•Adobe strongly recommends using OSMF to build HTTP Dynamic Streaming players.

Page 85: Video delivery methods

ADOBE HTTP STREAMING FILESF4F, F4M,F4X .bootstrap and .drmmeta

Page 86: Video delivery methods

Files The files required for HTTP streaming are:

F4F - MPEG4 media format. Holds the media F4M – Media description file(codec, resolution) F4X - Fragments location file .bootstrap – bootstrap information for each

segment .drmmeta – DRM encryption information

Page 87: Video delivery methods

*.F4F File

•Standard MP4 format with open file specification

•Each file contains a segment of the source file.

•Each segment contains one or more fragments of content.

•The file formats stores any flash supported codec

•A player can use a URL to address each fragment.

Page 88: Video delivery methods

HTTP Streaming file types

•*.F4X File▫Flash Index file. ▫Contains the location of specific

fragments within a stream. •*.F4M File▫Flash Media Manifest file. ▫Contains information about the media

codecs, resolution, and the availability of multi-bitrate files.

Page 89: Video delivery methods

F4M File Sample<?xml version="1.0" encoding="utf-8" ?> - <manifest xmlns="http://ns.adobe.com/f4m/1.0">  <id>Dynamic Streaming</id>   <duration>253</duration>   <mimeType>video/mp4</mimeType>   <baseURL>rtmp://cp67126.edgefcs.net/ondemand</baseURL>   <media

url="mp4:mediapm/ovp/content/demo/video/elephants_dream/elephants_dream_768x428_24.0fps_408kbps" bitrate="408" width="768" height="428" />

  <media url="mp4:mediapm/ovp/content/demo/video/elephants_dream/elephants_dream_768x428_24.0fps_608kbps" bitrate="608" width="768" height="428" />

  <media url="mp4:mediapm/ovp/content/demo/video/elephants_dream/elephants_dream_1024x522_24.0fps_908kbps" bitrate="908" width="1024" height="522" />

  </manifest>

Page 90: Video delivery methods

Folder example Example for File “foo” Folder will include :

fooSeg#.f4f (many fragments) foo.f4x foo.meta foo.bootstrap foo.drmmeta (if the stream is configured for

encryption)

Page 91: Video delivery methods

Session The player fetches foo.f4m manifest. The player request fragment# HTTP Origin Module locates the required f4f files by

looking at F4X index file and send to client. If the client seeks further, the Origin module searches at

the f4m and again locates the f4f file that fits, starts streaming again.

If the player constantly monitor bandwidth and performance and ask the Origin Module for the proper bit rate associated f4f.