Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Improving the Video Delivery at The New York Times

Improving the Video Delivery at The New York Times

This talk presents the improvements we made on the on-demand stack and live streaming platform at The New York Times.

Flávio Ribeiro

November 03, 2017
Tweet

More Decks by Flávio Ribeiro

Other Decks in Technology

Transcript

  1. Flavio Ribeiro Lead Engineer
 { , } /flavioribeiro http://flavioribeiro.com Maxwell

    Da Silva Executive Director of Engineering
 { , } /dayvson http://dayvson.me
  2. agenda • recap of 2016’s SMWest • on-demand stack improvements

    • live streaming stack improvements • what’s coming next
  3. Media Factory Client Acquisition API Media Factory API Transcoding API

    Database Distribution API CDN Storage / Swap Area recap
  4. Media Factory Client Acquisition API Media Factory API Transcoding API

    Database Distribution API CDN Storage / Swap Area recap
  5. some numbers • > 20k encoding/publishing jobs • ~ 12

    different outputs each (H264/MP4, HLS levels, VP8/WebM)
  6. some numbers • > 20k encoding/publishing jobs • ~ 12

    different outputs each (H264/MP4, HLS levels, VP8/WebM) • 4 external pull requests on the transcoding API
  7. some numbers • > 20k encoding/publishing jobs • ~ 12

    different outputs each (H264/MP4, HLS levels, VP8/WebM) • 4 external pull requests on the transcoding API • 6 encoding services supported
  8. • migrate assets to Google Cloud Storage except HLS •

    generate adaptive formats on-the-fly 
 cdn migration: our video library
  9. • migrate assets to Google Cloud Storage except HLS •

    generate adaptive formats on-the-fly • less storage (~40%) • more formats delivered (MPEG-Dash for free) • faster transcoding process • help on closed captions support
 cdn migration: our video library
  10. Media Factory Client Acquisition API Media Factory API Transcoding API

    Database Distribution API CDN Storage / Swap Area pipeline integration
  11. Media Factory Client Acquisition API Media Factory API Transcoding API

    Database Distribution API Storage / Swap Area pipeline integration
  12. Media Factory Client Acquisition API Media Factory API Transcoding API

    Database Distribution API Storage / Swap Area pipeline integration GCS GCS Helper + Cache
  13. closed captions • accessibility • follow web standards • muted

    autoplay • first step for internationalization
  14. closed captions • accessibility • follow web standards • muted

    autoplay • first step for internationalization • integrate with the pipeline
  15. closed captions • accessibility • follow web standards • muted

    autoplay • first step for internationalization • integrate with the pipeline • avoid vendor dependency
  16. closed captions • accessibility • follow web standards • muted

    autoplay • first step for internationalization • integrate with the pipeline • avoid vendor dependency • multiple generation options
  17. closed captions • accessibility • follow web standards • muted

    autoplay • first step for internationalization • integrate with the pipeline • avoid vendor dependency • multiple generation options • Integrated with our CMS
  18. Media Factory Client Acquisition API Media Factory API Transcoding API

    Database Distribution API Storage / Swap Area GCS GCS Helper + Cache pipeline integration
  19. Media Factory Client Acquisition API Media Factory API Transcoding API

    Database Distribution API Storage / Swap Area GCS GCS Helper + Cache Captions API pipeline integration
  20. #EXTM3U #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP- ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="index-f6.m3u8" #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3778274,RESOLUTION=854x480,FRAME- RATE=29.970,CODECS="avc1.4d401f,mp4a.40.2",SUBTITLES="subs0" index-f1-v1-a1.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=365226,RESOLUTION=426x240,FRAME- RATE=29.970,CODECS="avc1.4d401f,mp4a.40.2",SUBTITLES="subs0" index-f2-v1-a1.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=967515,RESOLUTION=640x360,FRAME-

    RATE=29.970,CODECS="avc1.4d401f,mp4a.40.2",SUBTITLES="subs0" index-f3-v1-a1.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1568184,RESOLUTION=854x480,FRAME- RATE=29.970,CODECS="avc1.4d401f,mp4a.40.2",SUBTITLES="subs0" index-f4-v1-a1.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2573061,RESOLUTION=854x480,FRAME- RATE=29.970,CODECS="avc1.4d401f,mp4a.40.2",SUBTITLES="subs0" index-f5-v1-a1.m3u8 segmented WebVTT on HLS
  21. on-demand stack improvements recap! • we are shutting down our

    datacenters • serving adaptive formats on-the-fly (less storage, more formats, speed up encoding)
  22. on-demand stack improvements recap! • we are shutting down our

    datacenters • serving adaptive formats on-the-fly (less storage, more formats, speed up encoding) • a/b tests to avoid hurting playback experience
  23. on-demand stack improvements recap! • we are shutting down our

    datacenters • serving adaptive formats on-the-fly (less storage, more formats, speed up encoding) • a/b tests to avoid hurting playback experience • closed captions API is just a wrapper for vendors
  24. on-demand stack improvements recap! • we are shutting down our

    datacenters • serving adaptive formats on-the-fly (less storage, more formats, speed up encoding) • a/b tests to avoid hurting playback experience • closed captions API is just a wrapper for vendors • on-the-fly packager takes care of serving the captions too
  25. on-demand stack improvements recap! • we are shutting down our

    datacenters • serving adaptive formats on-the-fly (less storage, more formats, speed up encoding) • a/b tests to avoid hurting playback experience • closed captions API is just a wrapper for vendors • on-the-fly packager takes care of serving the captions too • WebVTT on HLS for the win!
  26. some background • we had a basic support for live

    • newsroom expressed interest in doing more live streaming events
  27. some background • we had a basic support for live

    • newsroom expressed interest in doing more live streaming events • Presidential Election debates and correlated events
  28. problem 1: delivery • tons of HTTP PUT requests through

    open internet • our deal with the CDN was coming to an end
  29. problem 2: management • manual setup of the live events

    • no clear/automated way for live-to-VoD
  30. problem 2: management • manual setup of the live events

    • no clear/automated way for live-to-VoD • no clear/automated way to ingest the stream on partners
  31. what’s next • thumbnails service • A/B test: fragmented MP4’s

    versus MPEG-TS • A/B test: variable segments size for faster start
  32. what’s next • thumbnails service • A/B test: fragmented MP4’s

    versus MPEG-TS • A/B test: variable segments size for faster start • A/B test: motion covers for click-to-play engagement
  33. what’s next • thumbnails service • A/B test: fragmented MP4’s

    versus MPEG-TS • A/B test: variable segments size for faster start • A/B test: motion covers for click-to-play engagement • closed captions feeding recommendations / search
  34. what’s next • thumbnails service • A/B test: fragmented MP4’s

    versus MPEG-TS • A/B test: variable segments size for faster start • A/B test: motion covers for click-to-play engagement • closed captions feeding recommendations / search • closed captions integration with partners
  35. what’s next • thumbnails service • A/B test: fragmented MP4’s

    versus MPEG-TS • A/B test: variable segments size for faster start • A/B test: motion covers for click-to-play engagement • closed captions feeding recommendations / search • closed captions integration with partners • DVR for live streaming