SlideShare une entreprise Scribd logo
1  sur  106
Mobile Movies with
                       HTTP Live Streaming
                             Chris Adamson • @invalidname
                     CocoaConf DC • March 23, 2013 • Herndon, VA
                 Livestreaming at http://ustream.tv/channel/invalidstream




                             Sides and code available on my blog:
                                http://www.subfurther.com/blog

Monday, March 25, 13
So Many Streaming
                            Apps!




Monday, March 25, 13
So Many Streaming
                            Apps!




Monday, March 25, 13
Netflix




Monday, March 25, 13
Flixter




Monday, March 25, 13
Network TV Apps




Monday, March 25, 13
Network TV Apps




Monday, March 25, 13
NBC Olympics Live
                            Extra




Monday, March 25, 13
DirecTV




Monday, March 25, 13
UStream




Monday, March 25, 13
Crunchyroll




Monday, March 25, 13
TwitchTV




Monday, March 25, 13
TwitchTV




Monday, March 25, 13
TwitchTV




Monday, March 25, 13
iTunes Festival




Monday, March 25, 13
Apple Events




Monday, March 25, 13
Oh, and it can be embedded
                     in the <video> tag




Monday, March 25, 13
Oh, and it can be embedded
                     in the <video> tag




Monday, March 25, 13
Sounds good? How
                       do I get in on that?




Monday, March 25, 13
What You'll Learn

                       • What streaming is (and isn't)

                       • Setting up HLS on the server

                       • Using HLS streams in iOS apps

                       • Real-world deployment




Monday, March 25, 13
HLS: What It Is (and
                             isn't)




Monday, March 25, 13
Good Ol' Broadcast




Monday, March 25, 13
Broadcast Media

                       • Always live on some channel (a band of EM
                         spectrum).

                       • Every client tuned to that channel sees the
                         same thing, at the same time.

                       • One-way, one-to-many model.




Monday, March 25, 13
Internet
                       • Generally one-to-one (host to host).

                        • Multicast IP is an exception, but is rare on
                          the public Internet.

                       • Two-way communication over sockets.

                       • Routing can take many hops, via multiple
                         transport media (wire, wifi, cellular, etc.).


Monday, March 25, 13
Impedence Mismatch!




Monday, March 25, 13
Ye Olde Streaming
                       • Client makes socket connection and keeps it
                         open for duration of program.

                       • Server sends media at playback speed (plus
                         buffering).

                        • Shoutcast: MP3 files served slowly over HTTP.

                       • Typically use a special port number and special
                         server software.


Monday, March 25, 13
Streaming Problems
                       • Difficult and expensive to scale.

                       • Special port numbers routinely blocked by
                         businesses, ISPs, firewalls, etc.

                       • Competing standards: Real Player, Windows
                         Media, QuickTime (all with their own plugins).

                           • No wonder Flash won.

                       • Good luck holding a socket connection on cellular.


Monday, March 25, 13
What If…
                       • We didn't need an always-on socket
                         connection?

                       • We could just run over port 80?

                       • We could just adopt industry standards like
                         H.264 and AAC instead of cooking custom
                         codecs?



Monday, March 25, 13
HTTP Live Streaming
                       • Serves media as a series of short flat files, via
                         HTTP, usually on port 80.

                       • Any web server will do.

                       • Client software reassembles the data into a
                         continuous media stream.

                       • Spec does not specify contents, but Apple uses
                         H.264 and AAC, just like all their media apps.



Monday, March 25, 13
Serving up HLS


                       • Client URL is an .m3u8 playlist file

                       • Playlist points to the media segment files




Monday, March 25, 13
Monday, March 25, 13
The HLS playlist
     #EXTM3U
     #EXT-X-TARGETDURATION:10
     #EXT-X-VERSION:3
     #EXT-X-MEDIA-SEQUENCE:0
     #EXT-X-PLAYLIST-TYPE:VOD
     #EXTINF:9.975,!
     fileSequence0.ts
     #EXTINF:9.975,!
     fileSequence1.ts
     #EXTINF:9.975,!
     fileSequence2.ts
     #EXTINF:9.9767,!
     fileSequence3.ts
     #EXTINF:9.975,!

     [...]

     #EXT-X-ENDLIST

Monday, March 25, 13
The HLS playlist
     #EXTM3U                     Format: .m3u8 format,
     #EXT-X-TARGETDURATION:10
     #EXT-X-VERSION:3
                                 just a list of files to play
     #EXT-X-MEDIA-SEQUENCE:0
     #EXT-X-PLAYLIST-TYPE:VOD
     #EXTINF:9.975,!
     fileSequence0.ts
     #EXTINF:9.975,!
     fileSequence1.ts
     #EXTINF:9.975,!
     fileSequence2.ts
     #EXTINF:9.9767,!
     fileSequence3.ts
     #EXTINF:9.975,!

     [...]

     #EXT-X-ENDLIST

Monday, March 25, 13
The HLS playlist
     #EXTM3U                     Format: .m3u8 format,
     #EXT-X-TARGETDURATION:10
     #EXT-X-VERSION:3
                                 just a list of files to play
     #EXT-X-MEDIA-SEQUENCE:0
     #EXT-X-PLAYLIST-TYPE:VOD    Metadata tags describe
     #EXTINF:9.975,!
     fileSequence0.ts            the contents
     #EXTINF:9.975,!
     fileSequence1.ts
     #EXTINF:9.975,!
     fileSequence2.ts
     #EXTINF:9.9767,!
     fileSequence3.ts
     #EXTINF:9.975,!

     [...]

     #EXT-X-ENDLIST

Monday, March 25, 13
The HLS playlist
     #EXTM3U                     Format: .m3u8 format,
     #EXT-X-TARGETDURATION:10
     #EXT-X-VERSION:3
                                 just a list of files to play
     #EXT-X-MEDIA-SEQUENCE:0
     #EXT-X-PLAYLIST-TYPE:VOD    Metadata tags describe
     #EXTINF:9.975,!
     fileSequence0.ts            the contents
     #EXTINF:9.975,!
     fileSequence1.ts
     #EXTINF:9.975,!             Each segment file
     fileSequence2.ts
     #EXTINF:9.9767,!
                                 preceded by metadata
     fileSequence3.ts            (e.g., duration)
     #EXTINF:9.975,!

     [...]

     #EXT-X-ENDLIST

Monday, March 25, 13
The HLS playlist
     #EXTM3U                     Format: .m3u8 format,
     #EXT-X-TARGETDURATION:10
     #EXT-X-VERSION:3
                                 just a list of files to play
     #EXT-X-MEDIA-SEQUENCE:0
     #EXT-X-PLAYLIST-TYPE:VOD    Metadata tags describe
     #EXTINF:9.975,!
     fileSequence0.ts            the contents
     #EXTINF:9.975,!
     fileSequence1.ts
     #EXTINF:9.975,!             Each segment file
     fileSequence2.ts
     #EXTINF:9.9767,!
                                 preceded by metadata
     fileSequence3.ts            (e.g., duration)
     #EXTINF:9.975,!

     [...]                      If no end tag, client
     #EXT-X-ENDLIST             refreshes periodically
Monday, March 25, 13
<video src="prog_index.m3u8" width="640" height="480"
                 controls autoplay>No video tag support</video>
Monday, March 25, 13
How is this better than
                          a flat .m4v file?
                       • Streams can provide variants for different
                         bandwidths (as we’ll see…)

                       • Segments make it easier to scrub into the
                         video

                       • Streams can be live video




Monday, March 25, 13
The “Live” in HLS
                       • A playlist is a live stream if it doesn’t have an
                         #EXT-X-ENDLIST tag

                       • Live playlist will generally just contain the last
                         minute or so of segments

                       • Client will refresh playlist every minute or so,
                         download whatever segments it doesn’t
                         already have, queue them locally

                       • “Live” isn’t really “live” (often a minute behind)

Monday, March 25, 13
Serving up HLS




Monday, March 25, 13
Monday, March 25, 13
Monday, March 25, 13
Monday, March 25, 13
Monday, March 25, 13
Monday, March 25, 13
mediafilesegmenter
                       • Splits an A/V file into segment files, creates
                         the .m3u8 playlist

                       • Source must be .mov or .m4v with H.264 video,
                         AAC audio

                       • Output segments will be MPEG-2 Transport
                         Stream (.ts) files, or .aac if audio-only

                       • Segment paths are relative, use -b to prepend
                         URL stub


Monday, March 25, 13
Technical Note TN2224
       The following audio and video formats are supported:

       • Video: H.264 Baseline Profile Level 3.0 (iPhone/iPod Touch),
         Main Profile Level 3.1 (iPad 1,2)

       • Audio: HE-AAC or AAC-LC up to 48 kHz, stereo audio OR
         MP3 (MPEG-1 Audio Layer 3) 8 kHz to 48 kHz, stereo audio

       Note: iPhone 3G supports Baseline Profile Level 3.1. If your
       app runs on older iPhones, however, you should use H.264
       Baseline Profile 3.0 for compatibility.


Monday, March 25, 13
Yuna:HTTP Live Streaming tests cadamson$ mediafilesegmenter
            -f basic source/IMG_0251.MOV
            Jun 24 2012 10:01:24.203: Using floating point is not
            backward compatible to iOS 4.1 or earlier devices
            Jun 24 2012 10:01:24.204: Processing file /Users/cadamson/
            Documents/HTTP Live Streaming tests/source/IMG_0251.MOV
            Jun 24 2012 10:01:24.338: Finalized /Users/cadamson/
            Documents/HTTP Live Streaming tests/basic/fileSequence0.ts
            Jun 24 2012 10:01:24.375: segment bitrate 3.78028e+06 is
            new max
            Jun 24 2012 10:01:24.468: Finalized /Users/cadamson/
            Documents/HTTP Live Streaming tests/basic/fileSequence1.ts
            Jun 24 2012 10:01:24.554: Finalized /Users/cadamson/
            Documents/HTTP Live Streaming tests/basic/fileSequence2.ts
            Jun 24 2012 10:01:24.631: Finalized /Users/cadamson/
            Documents/HTTP Live Streaming tests/basic/fileSequence3.ts
            Jun 24 2012 10:01:24.717: Finalized /Users/cadamson/
            Documents/HTTP Live Streaming tests/basic/fileSequence4.ts




Monday, March 25, 13
Demo




Monday, March 25, 13
Variant Playlists
                       • One bitrate does not fit all: Mac on Ethernet
                         versus iPhone on Edge.

                       • Solution: encode your video at multiple
                         bitrates, offer metadata in playlist about what's
                         available, let client figure out which to use.

                       • HLS clients automatically switch to best
                         variant for current network conditions, switch
                         on the fly.


Monday, March 25, 13
variantplaylistcreator
                       • Creates a playlist that itself points to playlists
                         created with mediafilesegmenter.

                         • Each entry contains metadata describing the
                           bitrate and encoding of the variant.

                       • Tool takes argument pairs: file or URL of a
                         variant .m3u8, and metadata .plist created with
                         mediafilesegmenter -I flag

                       • First entry in variant playlist is default; client will try
                         this one first

Monday, March 25, 13
Encoding the variants




Monday, March 25, 13
TN2224
                       Recommendations




Monday, March 25, 13
Creating variants
           Yuna:HTTP Live Streaming tests cadamson$
           mediafilesegmenter -I -f variants/
           broadband/ source/IMG_0254_Broadband.m4v

           Yuna:HTTP Live Streaming tests cadamson$
           mediafilesegmenter -I -f variants/wifi
           source/IMG_0254_WiFi.m4v

           Yuna:HTTP Live Streaming tests cadamson$
           mediafilesegmenter -I -f variants/
           cellular source/IMG_0254_Cellular.m4v


Monday, March 25, 13
Creating variant playlist
          Yuna:HTTP Live Streaming tests cadamson$
          variantplaylistcreator -o variants/
          variants.m3u8 variants/broadband/
          prog_index.m3u8 source/
          IMG_0254_Broadband.plist variants/wifi/
          prog_index.m3u8 source/
          IMG_0254_WiFi.plist variants/cellular/
          prog_index.m3u8 source/
          IMG_0254_Cellular.plist



Monday, March 25, 13
Demo




Monday, March 25, 13
That's Great, but…
                       How do we keep people from stealing our stream?




Monday, March 25, 13
Encryption
                       • HLS encrypts files, not transport.

                       • Easy to scale: still serving flat files, but now
                         they're useless without decryption keys.

                       • Serving the keys still needs to be secure.

                       • Necessary, but not sufficient, for DRM.



Monday, March 25, 13
Encrypting a playlist
    Yuna:HTTP Live Streaming tests cadamson$ mediafilesegmenter -
    I -k keys -f encrypted/cellular source/IMG_0426_Cellular.m4v
    Jun 24 2012 18:59:47.115: Using new key/iv rotation period;
    this is not backward compatible to iOS 3.1.* or earlier
    devices.  Use the "-encrypt-iv=sequence" option for
    compatibility with those devices.
    Jun 24 2012 18:59:47.115: Using floating point is not
    backward compatible to iOS 4.1 or earlier devices
    Jun 24 2012 18:59:47.115: Processing file /Users/cadamson/
    Documents/HTTP Live Streaming tests/source/
    IMG_0426_Cellular.m4v
    Jun 24 2012 18:59:47.152: changing IV
    Jun 24 2012 18:59:47.160: Finalized /Users/cadamson/
    Documents/HTTP Live Streaming tests/encrypted/cellular/
    fileSequence0.ts
    Jun 24 2012 18:59:47.160: segment bitrate 271257 is new max


Monday, March 25, 13
Encrypted .ts files




Monday, March 25, 13
Encrypted .ts files




Monday, March 25, 13
Encrypted .ts files




Monday, March 25, 13
Encrypted .ts files




Monday, March 25, 13
Protect those keys




                       /www/protected


                                        /www/hls



Monday, March 25, 13
Demo




Monday, March 25, 13
Captions
                • HLS supports CEA-608 closed captions in the
                  MPEG-2 Transport Stream

                       • If using file segmenter, add a closed-
                         caption track (type 'clcp') to your source
                         QuickTime .mov

                       • Or use Compressor and Sonic Scenarist



Monday, March 25, 13
Captions in Netflix App




Monday, March 25, 13
Client-side HLS




Monday, March 25, 13
Opening an HLS
                               stream

                       • Provide the .m3u8 URL to
                         MPMoviePlayerController or AVPlayer

                       • Add the movie view or layer to your UI,
                         customizing size or scaling if necessary




Monday, March 25, 13
Create an
                MPMoviePlayerController

      // create new movie player
      self.moviePlayer = [[MPMoviePlayerController alloc]
      ! ! ! ! ! ! ! ! initWithContentURL:streamURL];
      [self.moviePlayer prepareToPlay];



                       • This is the same as playing a local file or
                         any other URL


Monday, March 25, 13
Add it to your UI

           [self.moviePlayer.view setFrame:
           ! ! ! ! ! ! ! self.movieContainerView.bounds];
           [self.movieContainerView addSubview:
           ! ! ! ! ! ! ! ! self.moviePlayer.view];
           self.moviePlayer.scalingMode =
           ! ! ! ! ! ! ! ! MPMovieScalingModeFill;


                       • Can inspect the moviePlayer's naturalSize, though
                         it may change during playback (listen for
                         MPMovieNaturalSizeAvailableNotification),
                         or just setFullscreen:animated:

Monday, March 25, 13
MPMovieScalingMode
                           AspectFit




Monday, March 25, 13
MPMovieScalingMode
                           AspectFill




Monday, March 25, 13
MPMovieScalingMode 
                              Fill




Monday, March 25, 13
Accessing Encrypted
                            Streams
                       • Media Player and AV Foundation can use
                         NSURLCredentials that you've provided

                       • Place credentials in
                         NSURLCredentialStorage

                       • Server can provide the keys securely(*) with
                         HTTP Basic or Digest authentication, an
                         HTTPS script, etc.
                            * - For various values of "secure"

Monday, March 25, 13
Setting credentials (1)

       NSURLProtectionSpace *protectionSpace =
       ! [[NSURLProtectionSpace alloc]
       ! ! initWithHost:host
       ! ! port:port
       ! ! protocol:protocol
       ! ! realm:realm
       ! ! authenticationMethod:
       ! ! ! NSURLAuthenticationMethodDefault];




Monday, March 25, 13
Setting credentials (2)

          NSURLCredential *credential =
          ! [NSURLCredential credentialWithUser:username
          ! ! ! ! ! ! ! ! !         password:password
          ! ! ! ! ! ! ! ! ! ! ! persistence:
          ! ! ! NSURLCredentialPersistenceForSession];

          [[NSURLCredentialStorage
          ! sharedCredentialStorage]
          ! ! setDefaultCredential:credential
          ! !    forProtectionSpace:protectionSpace];



Monday, March 25, 13
Live Streaming




Monday, March 25, 13
Live Streaming
                       • mediastreamsegmenter mostly works like the
                         file version, but takes its input from UDP
                         stream or a Unix pipe

                        • Only difference is that .m3u8 file doesn't
                          have an EXT-X-ENDLIST tag, so client
                          reloads periodically to fetch new segments

                       • How the heck do you create a UDP A/V
                         stream?


Monday, March 25, 13
You Don't


                       • None of Apple's tools create the required
                         MPEG-2 stream

                        • This is a "third party opportunity"

                        • Which begs the question… buy or build?


Monday, March 25, 13
Streaming in the Real
                              World
                            It's not all about iPhones…




Monday, March 25, 13
Streaming Clients
                       • Mobile Devices: iPhone, iPad, iPod Touch…
                         plus Android, Windows Mobile, etc.

                       • Mac and Windows PCs

                       • Game consoles

                       • Over-the-top (OTT) boxes: Apple TV, Roku



Monday, March 25, 13
Demo




Monday, March 25, 13
Playing HLS on Roku
                       Roku "channels" are programmed in the
                       "BrightScript" programming language:

                       port = CreateObject("roMessagePort")
                       screen = CreateObject("roVideoScreen")
                       screen.SetMessagePort(port)
                       screen.SetPositionNotificationPeriod(30)
                       screen.SetContent(episode)
                       screen.Show()

                                    episode is an "associative array" with
                                    key/value pairs for URLs, formats ("hls"),
                                    bitrates, etc.
Monday, March 25, 13
Let's Get Practical
                       • HLS is the preferred format for Roku

                       • What other devices do you get for free?

                       • What other devices do you have to be on?

                       • How to encode and deliver to the devices
                         you need?



Monday, March 25, 13
HLS Alternatives
                       • Flash still rules on the desktop/browser
                         space, thanks in part to Mozilla's obstinance
                         about H.264 in <video> (irony alert: H.264 is
                         the de facto standard for Flash video)

                       • Adobe Dynamic Streaming and Microsoft
                         Smooth Streaming are highly similar to HLS:
                         bitrate-adaptive streams over HTTP



Monday, March 25, 13
MPEG-DASH
                       • Attempt at a standardized approach to HTTP
                         adaptive-bitrate streaming. ISO/IEC 23009-1.




                                   http://xkcd.com/927/
Monday, March 25, 13
Emerging Consensus

                       • Flash for PCs

                       • HTTP Live Streaming for iOS

                       • Plus whatever other devices you need / are
                         able to support




Monday, March 25, 13
Real-World HLS

                       • Can you competently encode all your media
                         at all the variant bitrates you need?

                       • Do you have a way to QC all your streams?

                       • Can you handle the server load?




Monday, March 25, 13
Build or Buy: Services
                       • Provide hosting, live transcoding, bandwidth

                        • All-in-one: UStream, LiveStream, Justin.tv /
                          Twitch.tv (all of which have iOS apps)

                        • May provide broadcast tools (Flash applet,
                          Telestream Wirecast, etc.

                        • Often free with ads; you pay to go ad-free,
                          embed on your site, etc.


Monday, March 25, 13
invalidstream




                       http://www.ustream.tv/channel/invalidstream

Monday, March 25, 13
Production Demo




                       http://www.telestream.net/wirecast/
Monday, March 25, 13
Content Delivery
                          Networks




         http://en.wikipedia.org/wiki/Content_delivery_network
Monday, March 25, 13
Content Delivery
                               Networks
                       • CDNs host your media on edge servers that
                         are closer to your clients. Less strain on your
                         servers and the backbones.

                       • Examples: Akamai, Limelight, EdgeCast

                       • Big media companies may have their own
                         CDN

                       • Most already know how to do HLS


Monday, March 25, 13
Buy or Build: Encoders
                                $25,000




                       $4,000


Monday, March 25, 13
Buy or Build:
                                 Bandwidth

                       • Each HLS client will consume up to 1GB /
                         hour, depending on variant bitrates, client
                         bandwidth, etc.

                       • Many CDNs charge around $0.20/GB.




Monday, March 25, 13
Bandwidth Costs




                  Prices from ScaleEngine, UStream, and LiveStream as of
                                      October 2012
Monday, March 25, 13
Bandwidth Costs




                  Prices from ScaleEngine, UStream, and LiveStream as of
                                      October 2012
Monday, March 25, 13
Bandwidth Costs




                  Prices from ScaleEngine, UStream, and LiveStream as of
                                      October 2012
Monday, March 25, 13
Bandwidth Costs




                  Prices from ScaleEngine, UStream, and LiveStream as of
                                      October 2012
Monday, March 25, 13
Self-Hosted Costs




               Prices from MacMiniColo and Amazon EC2 as of March 2013

Monday, March 25, 13
Self-Hosted Costs




               Prices from MacMiniColo and Amazon EC2 as of March 2013

Monday, March 25, 13
Self-Hosted Costs




               Prices from MacMiniColo and Amazon EC2 as of March 2013

Monday, March 25, 13
Wrap Up




Monday, March 25, 13
Takeaways
                       • HLS is a very practical streaming solution

                       • Only part of the picture if you're multi-platform

                       • Encoding and serving correctly requires
                         some care and expertise, and a lot of money

                       • Client-side software requirements are fairly
                         simple



Monday, March 25, 13
Q&A
                       Slides and code will be available on my blog:
                               http://www.subfurther.com/blog
                           http://www.slideshare.net/invalidname

                                      @invalidname




Monday, March 25, 13

Contenu connexe

Tendances

Adaptive Media Streaming over Emerging Protocols
Adaptive Media Streaming over Emerging ProtocolsAdaptive Media Streaming over Emerging Protocols
Adaptive Media Streaming over Emerging ProtocolsAlpen-Adria-Universität
 
Using SVC for DASH in Mobile Environments
Using SVC for DASH in Mobile EnvironmentsUsing SVC for DASH in Mobile Environments
Using SVC for DASH in Mobile EnvironmentsChristopher Mueller
 
MPEG-DASH Conformance and Reference Software
MPEG-DASH Conformance and Reference SoftwareMPEG-DASH Conformance and Reference Software
MPEG-DASH Conformance and Reference SoftwareAlpen-Adria-Universität
 
A Seamless Web Integration of Adaptive HTTP Streaming
A Seamless Web Integration of Adaptive HTTP StreamingA Seamless Web Integration of Adaptive HTTP Streaming
A Seamless Web Integration of Adaptive HTTP StreamingAlpen-Adria-Universität
 
A PROXY EFFECT ANALYIS AND FAIR ADATPATION ALGORITHM FOR MULTIPLE COMPETING D...
A PROXY EFFECT ANALYIS AND FAIR ADATPATION ALGORITHM FOR MULTIPLE COMPETING D...A PROXY EFFECT ANALYIS AND FAIR ADATPATION ALGORITHM FOR MULTIPLE COMPETING D...
A PROXY EFFECT ANALYIS AND FAIR ADATPATION ALGORITHM FOR MULTIPLE COMPETING D...Christopher Mueller
 
Oscillation Compensating Dynamic Adaptive Streaming over HTTP
Oscillation Compensating Dynamic Adaptive Streaming over HTTPOscillation Compensating Dynamic Adaptive Streaming over HTTP
Oscillation Compensating Dynamic Adaptive Streaming over HTTPAlpen-Adria-Universität
 
MPEG DASH White Paper
MPEG DASH White PaperMPEG DASH White Paper
MPEG DASH White Paperidrajeev
 
Quality of Experience for Inter-Destination Media Synchronization
Quality of Experience for Inter-Destination Media SynchronizationQuality of Experience for Inter-Destination Media Synchronization
Quality of Experience for Inter-Destination Media SynchronizationAlpen-Adria-Universität
 
Media-Aware Network Elements on Legacy Devices
Media-Aware Network Elements on Legacy DevicesMedia-Aware Network Elements on Legacy Devices
Media-Aware Network Elements on Legacy DevicesAlpen-Adria-Universität
 
A scheme for maximal resource
A scheme for maximal resourceA scheme for maximal resource
A scheme for maximal resourceIJCNCJournal
 
Cs8591 Computer Networks - UNIT V
Cs8591 Computer Networks - UNIT VCs8591 Computer Networks - UNIT V
Cs8591 Computer Networks - UNIT Vpkaviya
 
MPEG-DASH Reference Software and Conformance
MPEG-DASH Reference Software and ConformanceMPEG-DASH Reference Software and Conformance
MPEG-DASH Reference Software and ConformanceAlpen-Adria-Universität
 
Audio/Video Conferencing over Publish/Subscribe Messaging Systems
Audio/Video Conferencing over Publish/Subscribe Messaging SystemsAudio/Video Conferencing over Publish/Subscribe Messaging Systems
Audio/Video Conferencing over Publish/Subscribe Messaging SystemsVideoguy
 
Switching techniques
Switching techniquesSwitching techniques
Switching techniquesGLIM Digital
 
Switiching by Ravi Namboori Babson University USA
Switiching by Ravi Namboori Babson University USASwitiching by Ravi Namboori Babson University USA
Switiching by Ravi Namboori Babson University USARavi Namboori
 

Tendances (19)

Dynamic Adaptive Streaming over HTTP Dataset
Dynamic Adaptive Streaming over HTTP DatasetDynamic Adaptive Streaming over HTTP Dataset
Dynamic Adaptive Streaming over HTTP Dataset
 
libdash 2.0
libdash 2.0libdash 2.0
libdash 2.0
 
Adaptive Media Streaming over Emerging Protocols
Adaptive Media Streaming over Emerging ProtocolsAdaptive Media Streaming over Emerging Protocols
Adaptive Media Streaming over Emerging Protocols
 
Using SVC for DASH in Mobile Environments
Using SVC for DASH in Mobile EnvironmentsUsing SVC for DASH in Mobile Environments
Using SVC for DASH in Mobile Environments
 
MPEG-DASH open source tools and cloud services
MPEG-DASH open source tools and cloud servicesMPEG-DASH open source tools and cloud services
MPEG-DASH open source tools and cloud services
 
MPEG-DASH Conformance and Reference Software
MPEG-DASH Conformance and Reference SoftwareMPEG-DASH Conformance and Reference Software
MPEG-DASH Conformance and Reference Software
 
A Seamless Web Integration of Adaptive HTTP Streaming
A Seamless Web Integration of Adaptive HTTP StreamingA Seamless Web Integration of Adaptive HTTP Streaming
A Seamless Web Integration of Adaptive HTTP Streaming
 
A PROXY EFFECT ANALYIS AND FAIR ADATPATION ALGORITHM FOR MULTIPLE COMPETING D...
A PROXY EFFECT ANALYIS AND FAIR ADATPATION ALGORITHM FOR MULTIPLE COMPETING D...A PROXY EFFECT ANALYIS AND FAIR ADATPATION ALGORITHM FOR MULTIPLE COMPETING D...
A PROXY EFFECT ANALYIS AND FAIR ADATPATION ALGORITHM FOR MULTIPLE COMPETING D...
 
Oscillation Compensating Dynamic Adaptive Streaming over HTTP
Oscillation Compensating Dynamic Adaptive Streaming over HTTPOscillation Compensating Dynamic Adaptive Streaming over HTTP
Oscillation Compensating Dynamic Adaptive Streaming over HTTP
 
MPEG DASH White Paper
MPEG DASH White PaperMPEG DASH White Paper
MPEG DASH White Paper
 
Technology Update: MPEG-Dash
Technology Update: MPEG-DashTechnology Update: MPEG-Dash
Technology Update: MPEG-Dash
 
Quality of Experience for Inter-Destination Media Synchronization
Quality of Experience for Inter-Destination Media SynchronizationQuality of Experience for Inter-Destination Media Synchronization
Quality of Experience for Inter-Destination Media Synchronization
 
Media-Aware Network Elements on Legacy Devices
Media-Aware Network Elements on Legacy DevicesMedia-Aware Network Elements on Legacy Devices
Media-Aware Network Elements on Legacy Devices
 
A scheme for maximal resource
A scheme for maximal resourceA scheme for maximal resource
A scheme for maximal resource
 
Cs8591 Computer Networks - UNIT V
Cs8591 Computer Networks - UNIT VCs8591 Computer Networks - UNIT V
Cs8591 Computer Networks - UNIT V
 
MPEG-DASH Reference Software and Conformance
MPEG-DASH Reference Software and ConformanceMPEG-DASH Reference Software and Conformance
MPEG-DASH Reference Software and Conformance
 
Audio/Video Conferencing over Publish/Subscribe Messaging Systems
Audio/Video Conferencing over Publish/Subscribe Messaging SystemsAudio/Video Conferencing over Publish/Subscribe Messaging Systems
Audio/Video Conferencing over Publish/Subscribe Messaging Systems
 
Switching techniques
Switching techniquesSwitching techniques
Switching techniques
 
Switiching by Ravi Namboori Babson University USA
Switiching by Ravi Namboori Babson University USASwitiching by Ravi Namboori Babson University USA
Switiching by Ravi Namboori Babson University USA
 

En vedette

Apple hls technical presentation
Apple hls technical presentationApple hls technical presentation
Apple hls technical presentationBuddhi
 
Http Live Streaming Intro
Http Live Streaming IntroHttp Live Streaming Intro
Http Live Streaming IntroVonbo
 
Http live streaming technical presentation
Http live streaming technical presentationHttp live streaming technical presentation
Http live streaming technical presentationBuddhi
 
Silverlight Wireshark Analysis
Silverlight Wireshark AnalysisSilverlight Wireshark Analysis
Silverlight Wireshark AnalysisYoss Cohen
 
Of knights-and-drawbridges-nat-behaviour
Of knights-and-drawbridges-nat-behaviourOf knights-and-drawbridges-nat-behaviour
Of knights-and-drawbridges-nat-behaviourAuro Tripathy
 
Scraper site or web scrapping
Scraper site or web scrappingScraper site or web scrapping
Scraper site or web scrappingBuddhi
 
Apple's live http streaming
Apple's live http streamingApple's live http streaming
Apple's live http streamingYoss Cohen
 
DLNA for Dummies
DLNA for DummiesDLNA for Dummies
DLNA for DummiesSatishAbbu
 
Master Video with AV Foundation
Master Video with AV FoundationMaster Video with AV Foundation
Master Video with AV FoundationBob McCune
 
Adaptive Media Streaming: The Role of Standards
Adaptive Media Streaming: The Role of StandardsAdaptive Media Streaming: The Role of Standards
Adaptive Media Streaming: The Role of StandardsAlpen-Adria-Universität
 
Ebu mpeg dash-webinar043
Ebu mpeg dash-webinar043Ebu mpeg dash-webinar043
Ebu mpeg dash-webinar043mc_killah
 
Using DASH and MPEG-2 TS
Using DASH and MPEG-2 TSUsing DASH and MPEG-2 TS
Using DASH and MPEG-2 TSAlex Giladi
 
Live streaming of video and subtitles with MPEG-DASH
Live streaming of video and subtitles with MPEG-DASHLive streaming of video and subtitles with MPEG-DASH
Live streaming of video and subtitles with MPEG-DASHCyril Concolato
 
Back-propagation Primer
Back-propagation PrimerBack-propagation Primer
Back-propagation PrimerAuro Tripathy
 
Video Streaming
Video StreamingVideo Streaming
Video StreamingVideoguy
 
Edge 2014: MPEG DASH – Tomorrow's Format Today
Edge 2014: MPEG DASH – Tomorrow's Format TodayEdge 2014: MPEG DASH – Tomorrow's Format Today
Edge 2014: MPEG DASH – Tomorrow's Format TodayAkamai Technologies
 
MPEG-DASH: Overview, State-of-the-Art, and Future Roadmap
MPEG-DASH: Overview, State-of-the-Art, and Future RoadmapMPEG-DASH: Overview, State-of-the-Art, and Future Roadmap
MPEG-DASH: Overview, State-of-the-Art, and Future RoadmapAlpen-Adria-Universität
 

En vedette (20)

HTTP Live Streaming
HTTP Live StreamingHTTP Live Streaming
HTTP Live Streaming
 
Apple hls technical presentation
Apple hls technical presentationApple hls technical presentation
Apple hls technical presentation
 
Http Live Streaming Intro
Http Live Streaming IntroHttp Live Streaming Intro
Http Live Streaming Intro
 
Http live streaming technical presentation
Http live streaming technical presentationHttp live streaming technical presentation
Http live streaming technical presentation
 
Silverlight Wireshark Analysis
Silverlight Wireshark AnalysisSilverlight Wireshark Analysis
Silverlight Wireshark Analysis
 
Of knights-and-drawbridges-nat-behaviour
Of knights-and-drawbridges-nat-behaviourOf knights-and-drawbridges-nat-behaviour
Of knights-and-drawbridges-nat-behaviour
 
Scraper site or web scrapping
Scraper site or web scrappingScraper site or web scrapping
Scraper site or web scrapping
 
Apple's live http streaming
Apple's live http streamingApple's live http streaming
Apple's live http streaming
 
Dlna
DlnaDlna
Dlna
 
DLNA for Dummies
DLNA for DummiesDLNA for Dummies
DLNA for Dummies
 
Master Video with AV Foundation
Master Video with AV FoundationMaster Video with AV Foundation
Master Video with AV Foundation
 
Adaptive Media Streaming: The Role of Standards
Adaptive Media Streaming: The Role of StandardsAdaptive Media Streaming: The Role of Standards
Adaptive Media Streaming: The Role of Standards
 
Ebu mpeg dash-webinar043
Ebu mpeg dash-webinar043Ebu mpeg dash-webinar043
Ebu mpeg dash-webinar043
 
Using DASH and MPEG-2 TS
Using DASH and MPEG-2 TSUsing DASH and MPEG-2 TS
Using DASH and MPEG-2 TS
 
Live streaming of video and subtitles with MPEG-DASH
Live streaming of video and subtitles with MPEG-DASHLive streaming of video and subtitles with MPEG-DASH
Live streaming of video and subtitles with MPEG-DASH
 
Back-propagation Primer
Back-propagation PrimerBack-propagation Primer
Back-propagation Primer
 
GoogLeNet Insights
GoogLeNet InsightsGoogLeNet Insights
GoogLeNet Insights
 
Video Streaming
Video StreamingVideo Streaming
Video Streaming
 
Edge 2014: MPEG DASH – Tomorrow's Format Today
Edge 2014: MPEG DASH – Tomorrow's Format TodayEdge 2014: MPEG DASH – Tomorrow's Format Today
Edge 2014: MPEG DASH – Tomorrow's Format Today
 
MPEG-DASH: Overview, State-of-the-Art, and Future Roadmap
MPEG-DASH: Overview, State-of-the-Art, and Future RoadmapMPEG-DASH: Overview, State-of-the-Art, and Future Roadmap
MPEG-DASH: Overview, State-of-the-Art, and Future Roadmap
 

Similaire à Mobile Movies with HTTP Live Streaming

Cocoaheads - Streaming on iOS devices
Cocoaheads - Streaming on iOS devicesCocoaheads - Streaming on iOS devices
Cocoaheads - Streaming on iOS devicesNirbhay Kundan
 
Streaming media presentation
Streaming media presentationStreaming media presentation
Streaming media presentationKyra Walton
 
Streaming media presentation
Streaming media presentationStreaming media presentation
Streaming media presentationKyra Walton
 
Bit_Bucket_x31_Final
Bit_Bucket_x31_FinalBit_Bucket_x31_Final
Bit_Bucket_x31_FinalSam Knutson
 
Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)
Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)
Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)Chris Adamson
 
LMSE - Ebplus Streaming Solution
LMSE - Ebplus Streaming SolutionLMSE - Ebplus Streaming Solution
LMSE - Ebplus Streaming Solutionsilverfox2580
 
LORENZ Building an integrated digital media archive and legal deposit
LORENZ Building an integrated digital media archive and legal depositLORENZ Building an integrated digital media archive and legal deposit
LORENZ Building an integrated digital media archive and legal depositFIAT/IFTA
 
Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Lorenzo Miniero
 
IDA 0911xx (can publish)
IDA 0911xx (can publish)IDA 0911xx (can publish)
IDA 0911xx (can publish)PasocoPteLtd
 
StreamingFrameworkPresentationFinalVersion
StreamingFrameworkPresentationFinalVersionStreamingFrameworkPresentationFinalVersion
StreamingFrameworkPresentationFinalVersionWissem Allouchi
 
Core Audio in iOS 6 (CocoaConf DC, March 2013)
Core Audio in iOS 6 (CocoaConf DC, March 2013)Core Audio in iOS 6 (CocoaConf DC, March 2013)
Core Audio in iOS 6 (CocoaConf DC, March 2013)Chris Adamson
 
Interactive media guide
Interactive media guideInteractive media guide
Interactive media guidebrownjordan
 
Broadcasters Dilemma with Archive Asset Management – Torn between long term a...
Broadcasters Dilemma with Archive Asset Management – Torn between long term a...Broadcasters Dilemma with Archive Asset Management – Torn between long term a...
Broadcasters Dilemma with Archive Asset Management – Torn between long term a...FIAT/IFTA
 
Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source WorldLorenzo Miniero
 
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)Chris Adamson
 
Digital Archive. Bojan Kosi, Mediateka
Digital Archive. Bojan Kosi, MediatekaDigital Archive. Bojan Kosi, Mediateka
Digital Archive. Bojan Kosi, MediatekaFIAT/IFTA
 
Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)Derek Buitenhuis
 
Video Streaming: Broadcast quality on a shoe string budget.
Video Streaming: Broadcast quality on a shoe string budget.  Video Streaming: Broadcast quality on a shoe string budget.
Video Streaming: Broadcast quality on a shoe string budget. netc2012
 
06-dash.pptx
06-dash.pptx06-dash.pptx
06-dash.pptxAliIssa53
 

Similaire à Mobile Movies with HTTP Live Streaming (20)

Cocoaheads - Streaming on iOS devices
Cocoaheads - Streaming on iOS devicesCocoaheads - Streaming on iOS devices
Cocoaheads - Streaming on iOS devices
 
Streaming media presentation
Streaming media presentationStreaming media presentation
Streaming media presentation
 
Streaming media presentation
Streaming media presentationStreaming media presentation
Streaming media presentation
 
Bit_Bucket_x31_Final
Bit_Bucket_x31_FinalBit_Bucket_x31_Final
Bit_Bucket_x31_Final
 
Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)
Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)
Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)
 
LMSE - Ebplus Streaming Solution
LMSE - Ebplus Streaming SolutionLMSE - Ebplus Streaming Solution
LMSE - Ebplus Streaming Solution
 
LORENZ Building an integrated digital media archive and legal deposit
LORENZ Building an integrated digital media archive and legal depositLORENZ Building an integrated digital media archive and legal deposit
LORENZ Building an integrated digital media archive and legal deposit
 
Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019
 
IDA 0911xx (can publish)
IDA 0911xx (can publish)IDA 0911xx (can publish)
IDA 0911xx (can publish)
 
StreamingFrameworkPresentationFinalVersion
StreamingFrameworkPresentationFinalVersionStreamingFrameworkPresentationFinalVersion
StreamingFrameworkPresentationFinalVersion
 
Core Audio in iOS 6 (CocoaConf DC, March 2013)
Core Audio in iOS 6 (CocoaConf DC, March 2013)Core Audio in iOS 6 (CocoaConf DC, March 2013)
Core Audio in iOS 6 (CocoaConf DC, March 2013)
 
Interactive media guide
Interactive media guideInteractive media guide
Interactive media guide
 
20 Years of Streaming in 20 Minutes
20 Years of Streaming in 20 Minutes20 Years of Streaming in 20 Minutes
20 Years of Streaming in 20 Minutes
 
Broadcasters Dilemma with Archive Asset Management – Torn between long term a...
Broadcasters Dilemma with Archive Asset Management – Torn between long term a...Broadcasters Dilemma with Archive Asset Management – Torn between long term a...
Broadcasters Dilemma with Archive Asset Management – Torn between long term a...
 
Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source World
 
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)
 
Digital Archive. Bojan Kosi, Mediateka
Digital Archive. Bojan Kosi, MediatekaDigital Archive. Bojan Kosi, Mediateka
Digital Archive. Bojan Kosi, Mediateka
 
Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)
 
Video Streaming: Broadcast quality on a shoe string budget.
Video Streaming: Broadcast quality on a shoe string budget.  Video Streaming: Broadcast quality on a shoe string budget.
Video Streaming: Broadcast quality on a shoe string budget.
 
06-dash.pptx
06-dash.pptx06-dash.pptx
06-dash.pptx
 

Plus de Chris Adamson

Whatever Happened to Visual Novel Anime? (AWA/Youmacon 2018)
Whatever Happened to Visual Novel Anime? (AWA/Youmacon 2018)Whatever Happened to Visual Novel Anime? (AWA/Youmacon 2018)
Whatever Happened to Visual Novel Anime? (AWA/Youmacon 2018)Chris Adamson
 
Whatever Happened to Visual Novel Anime? (JAFAX 2018)
Whatever Happened to Visual Novel Anime? (JAFAX 2018)Whatever Happened to Visual Novel Anime? (JAFAX 2018)
Whatever Happened to Visual Novel Anime? (JAFAX 2018)Chris Adamson
 
Media Frameworks Versus Swift (Swift by Northwest, October 2017)
Media Frameworks Versus Swift (Swift by Northwest, October 2017)Media Frameworks Versus Swift (Swift by Northwest, October 2017)
Media Frameworks Versus Swift (Swift by Northwest, October 2017)Chris Adamson
 
Fall Premieres: Media Frameworks in iOS 11, macOS 10.13, and tvOS 11 (CocoaCo...
Fall Premieres: Media Frameworks in iOS 11, macOS 10.13, and tvOS 11 (CocoaCo...Fall Premieres: Media Frameworks in iOS 11, macOS 10.13, and tvOS 11 (CocoaCo...
Fall Premieres: Media Frameworks in iOS 11, macOS 10.13, and tvOS 11 (CocoaCo...Chris Adamson
 
CocoaConf Chicago 2017: Media Frameworks and Swift: This Is Fine
CocoaConf Chicago 2017: Media Frameworks and Swift: This Is FineCocoaConf Chicago 2017: Media Frameworks and Swift: This Is Fine
CocoaConf Chicago 2017: Media Frameworks and Swift: This Is FineChris Adamson
 
Forward Swift 2017: Media Frameworks and Swift: This Is Fine
Forward Swift 2017: Media Frameworks and Swift: This Is FineForward Swift 2017: Media Frameworks and Swift: This Is Fine
Forward Swift 2017: Media Frameworks and Swift: This Is FineChris Adamson
 
Firebase: Totally Not Parse All Over Again (Unless It Is) (CocoaConf San Jose...
Firebase: Totally Not Parse All Over Again (Unless It Is) (CocoaConf San Jose...Firebase: Totally Not Parse All Over Again (Unless It Is) (CocoaConf San Jose...
Firebase: Totally Not Parse All Over Again (Unless It Is) (CocoaConf San Jose...Chris Adamson
 
Firebase: Totally Not Parse All Over Again (Unless It Is)
Firebase: Totally Not Parse All Over Again (Unless It Is)Firebase: Totally Not Parse All Over Again (Unless It Is)
Firebase: Totally Not Parse All Over Again (Unless It Is)Chris Adamson
 
Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)
Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)
Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)Chris Adamson
 
Video Killed the Rolex Star (CocoaConf Columbus, July 2015)
Video Killed the Rolex Star (CocoaConf Columbus, July 2015)Video Killed the Rolex Star (CocoaConf Columbus, July 2015)
Video Killed the Rolex Star (CocoaConf Columbus, July 2015)Chris Adamson
 
Revenge of the 80s: Cut/Copy/Paste, Undo/Redo, and More Big Hits (CocoaConf C...
Revenge of the 80s: Cut/Copy/Paste, Undo/Redo, and More Big Hits (CocoaConf C...Revenge of the 80s: Cut/Copy/Paste, Undo/Redo, and More Big Hits (CocoaConf C...
Revenge of the 80s: Cut/Copy/Paste, Undo/Redo, and More Big Hits (CocoaConf C...Chris Adamson
 
Core Image: The Most Fun API You're Not Using, CocoaConf Atlanta, December 2014
Core Image: The Most Fun API You're Not Using, CocoaConf Atlanta, December 2014Core Image: The Most Fun API You're Not Using, CocoaConf Atlanta, December 2014
Core Image: The Most Fun API You're Not Using, CocoaConf Atlanta, December 2014Chris Adamson
 
Stupid Video Tricks, CocoaConf Seattle 2014
Stupid Video Tricks, CocoaConf Seattle 2014Stupid Video Tricks, CocoaConf Seattle 2014
Stupid Video Tricks, CocoaConf Seattle 2014Chris Adamson
 
Stupid Video Tricks, CocoaConf Las Vegas
Stupid Video Tricks, CocoaConf Las VegasStupid Video Tricks, CocoaConf Las Vegas
Stupid Video Tricks, CocoaConf Las VegasChris Adamson
 
Core Image: The Most Fun API You're Not Using (CocoaConf Columbus 2014)
Core Image: The Most Fun API You're Not Using (CocoaConf Columbus 2014)Core Image: The Most Fun API You're Not Using (CocoaConf Columbus 2014)
Core Image: The Most Fun API You're Not Using (CocoaConf Columbus 2014)Chris Adamson
 
Stupid Video Tricks (CocoaConf DC, March 2014)
Stupid Video Tricks (CocoaConf DC, March 2014)Stupid Video Tricks (CocoaConf DC, March 2014)
Stupid Video Tricks (CocoaConf DC, March 2014)Chris Adamson
 
Introduction to the Roku SDK
Introduction to the Roku SDKIntroduction to the Roku SDK
Introduction to the Roku SDKChris Adamson
 
Get On The Audiobus (CocoaConf Atlanta, November 2013)
Get On The Audiobus (CocoaConf Atlanta, November 2013)Get On The Audiobus (CocoaConf Atlanta, November 2013)
Get On The Audiobus (CocoaConf Atlanta, November 2013)Chris Adamson
 
Get On The Audiobus (CocoaConf Boston, October 2013)
Get On The Audiobus (CocoaConf Boston, October 2013)Get On The Audiobus (CocoaConf Boston, October 2013)
Get On The Audiobus (CocoaConf Boston, October 2013)Chris Adamson
 

Plus de Chris Adamson (20)

Whatever Happened to Visual Novel Anime? (AWA/Youmacon 2018)
Whatever Happened to Visual Novel Anime? (AWA/Youmacon 2018)Whatever Happened to Visual Novel Anime? (AWA/Youmacon 2018)
Whatever Happened to Visual Novel Anime? (AWA/Youmacon 2018)
 
Whatever Happened to Visual Novel Anime? (JAFAX 2018)
Whatever Happened to Visual Novel Anime? (JAFAX 2018)Whatever Happened to Visual Novel Anime? (JAFAX 2018)
Whatever Happened to Visual Novel Anime? (JAFAX 2018)
 
Media Frameworks Versus Swift (Swift by Northwest, October 2017)
Media Frameworks Versus Swift (Swift by Northwest, October 2017)Media Frameworks Versus Swift (Swift by Northwest, October 2017)
Media Frameworks Versus Swift (Swift by Northwest, October 2017)
 
Fall Premieres: Media Frameworks in iOS 11, macOS 10.13, and tvOS 11 (CocoaCo...
Fall Premieres: Media Frameworks in iOS 11, macOS 10.13, and tvOS 11 (CocoaCo...Fall Premieres: Media Frameworks in iOS 11, macOS 10.13, and tvOS 11 (CocoaCo...
Fall Premieres: Media Frameworks in iOS 11, macOS 10.13, and tvOS 11 (CocoaCo...
 
CocoaConf Chicago 2017: Media Frameworks and Swift: This Is Fine
CocoaConf Chicago 2017: Media Frameworks and Swift: This Is FineCocoaConf Chicago 2017: Media Frameworks and Swift: This Is Fine
CocoaConf Chicago 2017: Media Frameworks and Swift: This Is Fine
 
Forward Swift 2017: Media Frameworks and Swift: This Is Fine
Forward Swift 2017: Media Frameworks and Swift: This Is FineForward Swift 2017: Media Frameworks and Swift: This Is Fine
Forward Swift 2017: Media Frameworks and Swift: This Is Fine
 
Firebase: Totally Not Parse All Over Again (Unless It Is) (CocoaConf San Jose...
Firebase: Totally Not Parse All Over Again (Unless It Is) (CocoaConf San Jose...Firebase: Totally Not Parse All Over Again (Unless It Is) (CocoaConf San Jose...
Firebase: Totally Not Parse All Over Again (Unless It Is) (CocoaConf San Jose...
 
Firebase: Totally Not Parse All Over Again (Unless It Is)
Firebase: Totally Not Parse All Over Again (Unless It Is)Firebase: Totally Not Parse All Over Again (Unless It Is)
Firebase: Totally Not Parse All Over Again (Unless It Is)
 
Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)
Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)
Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)
 
Video Killed the Rolex Star (CocoaConf Columbus, July 2015)
Video Killed the Rolex Star (CocoaConf Columbus, July 2015)Video Killed the Rolex Star (CocoaConf Columbus, July 2015)
Video Killed the Rolex Star (CocoaConf Columbus, July 2015)
 
Revenge of the 80s: Cut/Copy/Paste, Undo/Redo, and More Big Hits (CocoaConf C...
Revenge of the 80s: Cut/Copy/Paste, Undo/Redo, and More Big Hits (CocoaConf C...Revenge of the 80s: Cut/Copy/Paste, Undo/Redo, and More Big Hits (CocoaConf C...
Revenge of the 80s: Cut/Copy/Paste, Undo/Redo, and More Big Hits (CocoaConf C...
 
Core Image: The Most Fun API You're Not Using, CocoaConf Atlanta, December 2014
Core Image: The Most Fun API You're Not Using, CocoaConf Atlanta, December 2014Core Image: The Most Fun API You're Not Using, CocoaConf Atlanta, December 2014
Core Image: The Most Fun API You're Not Using, CocoaConf Atlanta, December 2014
 
Stupid Video Tricks, CocoaConf Seattle 2014
Stupid Video Tricks, CocoaConf Seattle 2014Stupid Video Tricks, CocoaConf Seattle 2014
Stupid Video Tricks, CocoaConf Seattle 2014
 
Stupid Video Tricks, CocoaConf Las Vegas
Stupid Video Tricks, CocoaConf Las VegasStupid Video Tricks, CocoaConf Las Vegas
Stupid Video Tricks, CocoaConf Las Vegas
 
Core Image: The Most Fun API You're Not Using (CocoaConf Columbus 2014)
Core Image: The Most Fun API You're Not Using (CocoaConf Columbus 2014)Core Image: The Most Fun API You're Not Using (CocoaConf Columbus 2014)
Core Image: The Most Fun API You're Not Using (CocoaConf Columbus 2014)
 
Stupid Video Tricks (CocoaConf DC, March 2014)
Stupid Video Tricks (CocoaConf DC, March 2014)Stupid Video Tricks (CocoaConf DC, March 2014)
Stupid Video Tricks (CocoaConf DC, March 2014)
 
Stupid Video Tricks
Stupid Video TricksStupid Video Tricks
Stupid Video Tricks
 
Introduction to the Roku SDK
Introduction to the Roku SDKIntroduction to the Roku SDK
Introduction to the Roku SDK
 
Get On The Audiobus (CocoaConf Atlanta, November 2013)
Get On The Audiobus (CocoaConf Atlanta, November 2013)Get On The Audiobus (CocoaConf Atlanta, November 2013)
Get On The Audiobus (CocoaConf Atlanta, November 2013)
 
Get On The Audiobus (CocoaConf Boston, October 2013)
Get On The Audiobus (CocoaConf Boston, October 2013)Get On The Audiobus (CocoaConf Boston, October 2013)
Get On The Audiobus (CocoaConf Boston, October 2013)
 

Dernier

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 

Dernier (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 

Mobile Movies with HTTP Live Streaming

  • 1. Mobile Movies with HTTP Live Streaming Chris Adamson • @invalidname CocoaConf DC • March 23, 2013 • Herndon, VA Livestreaming at http://ustream.tv/channel/invalidstream Sides and code available on my blog: http://www.subfurther.com/blog Monday, March 25, 13
  • 2. So Many Streaming Apps! Monday, March 25, 13
  • 3. So Many Streaming Apps! Monday, March 25, 13
  • 6. Network TV Apps Monday, March 25, 13
  • 7. Network TV Apps Monday, March 25, 13
  • 8. NBC Olympics Live Extra Monday, March 25, 13
  • 17. Oh, and it can be embedded in the <video> tag Monday, March 25, 13
  • 18. Oh, and it can be embedded in the <video> tag Monday, March 25, 13
  • 19. Sounds good? How do I get in on that? Monday, March 25, 13
  • 20. What You'll Learn • What streaming is (and isn't) • Setting up HLS on the server • Using HLS streams in iOS apps • Real-world deployment Monday, March 25, 13
  • 21. HLS: What It Is (and isn't) Monday, March 25, 13
  • 23. Broadcast Media • Always live on some channel (a band of EM spectrum). • Every client tuned to that channel sees the same thing, at the same time. • One-way, one-to-many model. Monday, March 25, 13
  • 24. Internet • Generally one-to-one (host to host). • Multicast IP is an exception, but is rare on the public Internet. • Two-way communication over sockets. • Routing can take many hops, via multiple transport media (wire, wifi, cellular, etc.). Monday, March 25, 13
  • 26. Ye Olde Streaming • Client makes socket connection and keeps it open for duration of program. • Server sends media at playback speed (plus buffering). • Shoutcast: MP3 files served slowly over HTTP. • Typically use a special port number and special server software. Monday, March 25, 13
  • 27. Streaming Problems • Difficult and expensive to scale. • Special port numbers routinely blocked by businesses, ISPs, firewalls, etc. • Competing standards: Real Player, Windows Media, QuickTime (all with their own plugins). • No wonder Flash won. • Good luck holding a socket connection on cellular. Monday, March 25, 13
  • 28. What If… • We didn't need an always-on socket connection? • We could just run over port 80? • We could just adopt industry standards like H.264 and AAC instead of cooking custom codecs? Monday, March 25, 13
  • 29. HTTP Live Streaming • Serves media as a series of short flat files, via HTTP, usually on port 80. • Any web server will do. • Client software reassembles the data into a continuous media stream. • Spec does not specify contents, but Apple uses H.264 and AAC, just like all their media apps. Monday, March 25, 13
  • 30. Serving up HLS • Client URL is an .m3u8 playlist file • Playlist points to the media segment files Monday, March 25, 13
  • 32. The HLS playlist #EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-PLAYLIST-TYPE:VOD #EXTINF:9.975,! fileSequence0.ts #EXTINF:9.975,! fileSequence1.ts #EXTINF:9.975,! fileSequence2.ts #EXTINF:9.9767,! fileSequence3.ts #EXTINF:9.975,! [...] #EXT-X-ENDLIST Monday, March 25, 13
  • 33. The HLS playlist #EXTM3U Format: .m3u8 format, #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 just a list of files to play #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-PLAYLIST-TYPE:VOD #EXTINF:9.975,! fileSequence0.ts #EXTINF:9.975,! fileSequence1.ts #EXTINF:9.975,! fileSequence2.ts #EXTINF:9.9767,! fileSequence3.ts #EXTINF:9.975,! [...] #EXT-X-ENDLIST Monday, March 25, 13
  • 34. The HLS playlist #EXTM3U Format: .m3u8 format, #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 just a list of files to play #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-PLAYLIST-TYPE:VOD Metadata tags describe #EXTINF:9.975,! fileSequence0.ts the contents #EXTINF:9.975,! fileSequence1.ts #EXTINF:9.975,! fileSequence2.ts #EXTINF:9.9767,! fileSequence3.ts #EXTINF:9.975,! [...] #EXT-X-ENDLIST Monday, March 25, 13
  • 35. The HLS playlist #EXTM3U Format: .m3u8 format, #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 just a list of files to play #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-PLAYLIST-TYPE:VOD Metadata tags describe #EXTINF:9.975,! fileSequence0.ts the contents #EXTINF:9.975,! fileSequence1.ts #EXTINF:9.975,! Each segment file fileSequence2.ts #EXTINF:9.9767,! preceded by metadata fileSequence3.ts (e.g., duration) #EXTINF:9.975,! [...] #EXT-X-ENDLIST Monday, March 25, 13
  • 36. The HLS playlist #EXTM3U Format: .m3u8 format, #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 just a list of files to play #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-PLAYLIST-TYPE:VOD Metadata tags describe #EXTINF:9.975,! fileSequence0.ts the contents #EXTINF:9.975,! fileSequence1.ts #EXTINF:9.975,! Each segment file fileSequence2.ts #EXTINF:9.9767,! preceded by metadata fileSequence3.ts (e.g., duration) #EXTINF:9.975,! [...] If no end tag, client #EXT-X-ENDLIST refreshes periodically Monday, March 25, 13
  • 37. <video src="prog_index.m3u8" width="640" height="480" controls autoplay>No video tag support</video> Monday, March 25, 13
  • 38. How is this better than a flat .m4v file? • Streams can provide variants for different bandwidths (as we’ll see…) • Segments make it easier to scrub into the video • Streams can be live video Monday, March 25, 13
  • 39. The “Live” in HLS • A playlist is a live stream if it doesn’t have an #EXT-X-ENDLIST tag • Live playlist will generally just contain the last minute or so of segments • Client will refresh playlist every minute or so, download whatever segments it doesn’t already have, queue them locally • “Live” isn’t really “live” (often a minute behind) Monday, March 25, 13
  • 40. Serving up HLS Monday, March 25, 13
  • 46. mediafilesegmenter • Splits an A/V file into segment files, creates the .m3u8 playlist • Source must be .mov or .m4v with H.264 video, AAC audio • Output segments will be MPEG-2 Transport Stream (.ts) files, or .aac if audio-only • Segment paths are relative, use -b to prepend URL stub Monday, March 25, 13
  • 47. Technical Note TN2224 The following audio and video formats are supported: • Video: H.264 Baseline Profile Level 3.0 (iPhone/iPod Touch), Main Profile Level 3.1 (iPad 1,2) • Audio: HE-AAC or AAC-LC up to 48 kHz, stereo audio OR MP3 (MPEG-1 Audio Layer 3) 8 kHz to 48 kHz, stereo audio Note: iPhone 3G supports Baseline Profile Level 3.1. If your app runs on older iPhones, however, you should use H.264 Baseline Profile 3.0 for compatibility. Monday, March 25, 13
  • 48. Yuna:HTTP Live Streaming tests cadamson$ mediafilesegmenter -f basic source/IMG_0251.MOV Jun 24 2012 10:01:24.203: Using floating point is not backward compatible to iOS 4.1 or earlier devices Jun 24 2012 10:01:24.204: Processing file /Users/cadamson/ Documents/HTTP Live Streaming tests/source/IMG_0251.MOV Jun 24 2012 10:01:24.338: Finalized /Users/cadamson/ Documents/HTTP Live Streaming tests/basic/fileSequence0.ts Jun 24 2012 10:01:24.375: segment bitrate 3.78028e+06 is new max Jun 24 2012 10:01:24.468: Finalized /Users/cadamson/ Documents/HTTP Live Streaming tests/basic/fileSequence1.ts Jun 24 2012 10:01:24.554: Finalized /Users/cadamson/ Documents/HTTP Live Streaming tests/basic/fileSequence2.ts Jun 24 2012 10:01:24.631: Finalized /Users/cadamson/ Documents/HTTP Live Streaming tests/basic/fileSequence3.ts Jun 24 2012 10:01:24.717: Finalized /Users/cadamson/ Documents/HTTP Live Streaming tests/basic/fileSequence4.ts Monday, March 25, 13
  • 50. Variant Playlists • One bitrate does not fit all: Mac on Ethernet versus iPhone on Edge. • Solution: encode your video at multiple bitrates, offer metadata in playlist about what's available, let client figure out which to use. • HLS clients automatically switch to best variant for current network conditions, switch on the fly. Monday, March 25, 13
  • 51. variantplaylistcreator • Creates a playlist that itself points to playlists created with mediafilesegmenter. • Each entry contains metadata describing the bitrate and encoding of the variant. • Tool takes argument pairs: file or URL of a variant .m3u8, and metadata .plist created with mediafilesegmenter -I flag • First entry in variant playlist is default; client will try this one first Monday, March 25, 13
  • 53. TN2224 Recommendations Monday, March 25, 13
  • 54. Creating variants Yuna:HTTP Live Streaming tests cadamson$ mediafilesegmenter -I -f variants/ broadband/ source/IMG_0254_Broadband.m4v Yuna:HTTP Live Streaming tests cadamson$ mediafilesegmenter -I -f variants/wifi source/IMG_0254_WiFi.m4v Yuna:HTTP Live Streaming tests cadamson$ mediafilesegmenter -I -f variants/ cellular source/IMG_0254_Cellular.m4v Monday, March 25, 13
  • 55. Creating variant playlist Yuna:HTTP Live Streaming tests cadamson$ variantplaylistcreator -o variants/ variants.m3u8 variants/broadband/ prog_index.m3u8 source/ IMG_0254_Broadband.plist variants/wifi/ prog_index.m3u8 source/ IMG_0254_WiFi.plist variants/cellular/ prog_index.m3u8 source/ IMG_0254_Cellular.plist Monday, March 25, 13
  • 57. That's Great, but… How do we keep people from stealing our stream? Monday, March 25, 13
  • 58. Encryption • HLS encrypts files, not transport. • Easy to scale: still serving flat files, but now they're useless without decryption keys. • Serving the keys still needs to be secure. • Necessary, but not sufficient, for DRM. Monday, March 25, 13
  • 59. Encrypting a playlist Yuna:HTTP Live Streaming tests cadamson$ mediafilesegmenter - I -k keys -f encrypted/cellular source/IMG_0426_Cellular.m4v Jun 24 2012 18:59:47.115: Using new key/iv rotation period; this is not backward compatible to iOS 3.1.* or earlier devices.  Use the "-encrypt-iv=sequence" option for compatibility with those devices. Jun 24 2012 18:59:47.115: Using floating point is not backward compatible to iOS 4.1 or earlier devices Jun 24 2012 18:59:47.115: Processing file /Users/cadamson/ Documents/HTTP Live Streaming tests/source/ IMG_0426_Cellular.m4v Jun 24 2012 18:59:47.152: changing IV Jun 24 2012 18:59:47.160: Finalized /Users/cadamson/ Documents/HTTP Live Streaming tests/encrypted/cellular/ fileSequence0.ts Jun 24 2012 18:59:47.160: segment bitrate 271257 is new max Monday, March 25, 13
  • 64. Protect those keys /www/protected /www/hls Monday, March 25, 13
  • 66. Captions • HLS supports CEA-608 closed captions in the MPEG-2 Transport Stream • If using file segmenter, add a closed- caption track (type 'clcp') to your source QuickTime .mov • Or use Compressor and Sonic Scenarist Monday, March 25, 13
  • 67. Captions in Netflix App Monday, March 25, 13
  • 69. Opening an HLS stream • Provide the .m3u8 URL to MPMoviePlayerController or AVPlayer • Add the movie view or layer to your UI, customizing size or scaling if necessary Monday, March 25, 13
  • 70. Create an MPMoviePlayerController // create new movie player self.moviePlayer = [[MPMoviePlayerController alloc] ! ! ! ! ! ! ! ! initWithContentURL:streamURL]; [self.moviePlayer prepareToPlay]; • This is the same as playing a local file or any other URL Monday, March 25, 13
  • 71. Add it to your UI [self.moviePlayer.view setFrame: ! ! ! ! ! ! ! self.movieContainerView.bounds]; [self.movieContainerView addSubview: ! ! ! ! ! ! ! ! self.moviePlayer.view]; self.moviePlayer.scalingMode = ! ! ! ! ! ! ! ! MPMovieScalingModeFill; • Can inspect the moviePlayer's naturalSize, though it may change during playback (listen for MPMovieNaturalSizeAvailableNotification), or just setFullscreen:animated: Monday, March 25, 13
  • 72. MPMovieScalingMode AspectFit Monday, March 25, 13
  • 73. MPMovieScalingMode AspectFill Monday, March 25, 13
  • 74. MPMovieScalingMode  Fill Monday, March 25, 13
  • 75. Accessing Encrypted Streams • Media Player and AV Foundation can use NSURLCredentials that you've provided • Place credentials in NSURLCredentialStorage • Server can provide the keys securely(*) with HTTP Basic or Digest authentication, an HTTPS script, etc. * - For various values of "secure" Monday, March 25, 13
  • 76. Setting credentials (1) NSURLProtectionSpace *protectionSpace = ! [[NSURLProtectionSpace alloc] ! ! initWithHost:host ! ! port:port ! ! protocol:protocol ! ! realm:realm ! ! authenticationMethod: ! ! ! NSURLAuthenticationMethodDefault]; Monday, March 25, 13
  • 77. Setting credentials (2) NSURLCredential *credential = ! [NSURLCredential credentialWithUser:username ! ! ! ! ! ! ! ! !         password:password ! ! ! ! ! ! ! ! ! ! ! persistence: ! ! ! NSURLCredentialPersistenceForSession]; [[NSURLCredentialStorage ! sharedCredentialStorage] ! ! setDefaultCredential:credential ! ! forProtectionSpace:protectionSpace]; Monday, March 25, 13
  • 79. Live Streaming • mediastreamsegmenter mostly works like the file version, but takes its input from UDP stream or a Unix pipe • Only difference is that .m3u8 file doesn't have an EXT-X-ENDLIST tag, so client reloads periodically to fetch new segments • How the heck do you create a UDP A/V stream? Monday, March 25, 13
  • 80. You Don't • None of Apple's tools create the required MPEG-2 stream • This is a "third party opportunity" • Which begs the question… buy or build? Monday, March 25, 13
  • 81. Streaming in the Real World It's not all about iPhones… Monday, March 25, 13
  • 82. Streaming Clients • Mobile Devices: iPhone, iPad, iPod Touch… plus Android, Windows Mobile, etc. • Mac and Windows PCs • Game consoles • Over-the-top (OTT) boxes: Apple TV, Roku Monday, March 25, 13
  • 84. Playing HLS on Roku Roku "channels" are programmed in the "BrightScript" programming language: port = CreateObject("roMessagePort") screen = CreateObject("roVideoScreen") screen.SetMessagePort(port) screen.SetPositionNotificationPeriod(30) screen.SetContent(episode) screen.Show() episode is an "associative array" with key/value pairs for URLs, formats ("hls"), bitrates, etc. Monday, March 25, 13
  • 85. Let's Get Practical • HLS is the preferred format for Roku • What other devices do you get for free? • What other devices do you have to be on? • How to encode and deliver to the devices you need? Monday, March 25, 13
  • 86. HLS Alternatives • Flash still rules on the desktop/browser space, thanks in part to Mozilla's obstinance about H.264 in <video> (irony alert: H.264 is the de facto standard for Flash video) • Adobe Dynamic Streaming and Microsoft Smooth Streaming are highly similar to HLS: bitrate-adaptive streams over HTTP Monday, March 25, 13
  • 87. MPEG-DASH • Attempt at a standardized approach to HTTP adaptive-bitrate streaming. ISO/IEC 23009-1. http://xkcd.com/927/ Monday, March 25, 13
  • 88. Emerging Consensus • Flash for PCs • HTTP Live Streaming for iOS • Plus whatever other devices you need / are able to support Monday, March 25, 13
  • 89. Real-World HLS • Can you competently encode all your media at all the variant bitrates you need? • Do you have a way to QC all your streams? • Can you handle the server load? Monday, March 25, 13
  • 90. Build or Buy: Services • Provide hosting, live transcoding, bandwidth • All-in-one: UStream, LiveStream, Justin.tv / Twitch.tv (all of which have iOS apps) • May provide broadcast tools (Flash applet, Telestream Wirecast, etc. • Often free with ads; you pay to go ad-free, embed on your site, etc. Monday, March 25, 13
  • 91. invalidstream http://www.ustream.tv/channel/invalidstream Monday, March 25, 13
  • 92. Production Demo http://www.telestream.net/wirecast/ Monday, March 25, 13
  • 93. Content Delivery Networks http://en.wikipedia.org/wiki/Content_delivery_network Monday, March 25, 13
  • 94. Content Delivery Networks • CDNs host your media on edge servers that are closer to your clients. Less strain on your servers and the backbones. • Examples: Akamai, Limelight, EdgeCast • Big media companies may have their own CDN • Most already know how to do HLS Monday, March 25, 13
  • 95. Buy or Build: Encoders $25,000 $4,000 Monday, March 25, 13
  • 96. Buy or Build: Bandwidth • Each HLS client will consume up to 1GB / hour, depending on variant bitrates, client bandwidth, etc. • Many CDNs charge around $0.20/GB. Monday, March 25, 13
  • 97. Bandwidth Costs Prices from ScaleEngine, UStream, and LiveStream as of October 2012 Monday, March 25, 13
  • 98. Bandwidth Costs Prices from ScaleEngine, UStream, and LiveStream as of October 2012 Monday, March 25, 13
  • 99. Bandwidth Costs Prices from ScaleEngine, UStream, and LiveStream as of October 2012 Monday, March 25, 13
  • 100. Bandwidth Costs Prices from ScaleEngine, UStream, and LiveStream as of October 2012 Monday, March 25, 13
  • 101. Self-Hosted Costs Prices from MacMiniColo and Amazon EC2 as of March 2013 Monday, March 25, 13
  • 102. Self-Hosted Costs Prices from MacMiniColo and Amazon EC2 as of March 2013 Monday, March 25, 13
  • 103. Self-Hosted Costs Prices from MacMiniColo and Amazon EC2 as of March 2013 Monday, March 25, 13
  • 105. Takeaways • HLS is a very practical streaming solution • Only part of the picture if you're multi-platform • Encoding and serving correctly requires some care and expertise, and a lot of money • Client-side software requirements are fairly simple Monday, March 25, 13
  • 106. Q&A Slides and code will be available on my blog: http://www.subfurther.com/blog http://www.slideshare.net/invalidname @invalidname Monday, March 25, 13