SlideShare uma empresa Scribd logo
1 de 43
Building a Video
Encoding Pipeline at
The New York Times
Streaming Media West, 2016
Maxwell Dayvson Da Silva
Sr. Director of Engineering
http://github.com/dayvson
http://twitter.com/dayvson
http://dayvson.me
Flávio Ribeiro
Sr. Software Engineer
http://github.com/flavioribeiro
http://twitter.com/flavioribeiro
http://flavioribeiro.com
First, a little bit of history
The Architecture of the old system
Video CMS
(StoryLog)
NYTimes CMS
(Scoop)
Internal
Encoding Cluster
Internal Storage
CDN
The flaws
The Flaws
1. The whole process relies on a filename
2. Several watch folders
3. Unstable transcoding
4. Hard to scale
5. Two CMSs are required to publish a video.
The Flaws
1. The whole process relies on a filename
2. Several watch folders (hard to maintain)
3. Unstable transcoding (proprietary software)
4. Hard to scale (cluster in-house)
43380_1_saudi-documentary_wg_720p.mp4
The Flaws
1. The whole process relies on a filename
2. Several watch folders (hard to maintain)
3. Unstable transcoding (proprietary software)
4. Hard to scale (cluster in-house)
43380_1_saudi-documentary_wg_720p.mp4
Production ID
The Flaws
1. The whole process relies on a filename
2. Several watch folders (hard to maintain)
3. Unstable transcoding (proprietary software)
4. Hard to scale (cluster in-house)
43380_1_saudi-documentary_wg_720p.mp4
Version
The Flaws
1. The whole process relies on a filename
2. Several watch folders (hard to maintain)
3. Unstable transcoding (proprietary software)
4. Hard to scale (cluster in-house)
43380_1_saudi-documentary_wg_720p.mp4
Slug
The Flaws
1. The whole process relies on a filename
2. Several watch folders (hard to maintain)
3. Unstable transcoding (proprietary software)
4. Hard to scale (cluster in-house)
43380_1_saudi-documentary_wg_720p.mp4
Resolution
The Flaws
1. The whole process relies on a filename
2. Several watch folders
3. Unstable transcoding
4. Hard to scale
5. Two CMS to publish a video
The Flaws
1. Filenames
2. Several watch folders
3. U
4. Hard to scale (cluster in-house)
The Flaws
1. The whole process relies on a filename
2. Several watch folders
3. Unstable transcoding
4. Hard to scale
5. Two CMS to publish a video
The Flaws
The Flaws
1. The whole process relies on a filename
2. Several watch folders
3. Unstable transcoding
4. Hard to scale
5. Two CMS to publish a video
Number of videos
published per year.
The Flaws
1. The whole process relies on a filename
2. Several watch folders
3. Unstable transcoding
4. Hard to scale
5. Two CMSs to publish a video
The challenges
The Challenges
1. Fast encoding. News Clips are very time sensitive
2. Scalability
3. Reliability
4. Company-wide video transcoding solution
5. High-quality transcoding
360°, Drone footage, Live Action
The solution
The Video Pipeline
Distribution API
Acquisition API
Transcoding API
Storage
Media Factory Client
Media Factory API
CDN
Database
Media Factory Client
Distribution API
Acquisition API
Transcoding API
Storage
Media Factory Client
Media Factory API
Database
CDN
Media Factory Client
1. EcmaScript 6 Library
2. Upload Files from Browser to S3
http://github.com/TTLabs/EvaporateJS
3. Trigger Jobs on Media Factory API
4. Used by other teams
Acquisition API
Distribution API
Acquisition API
Transcoding API
Storage
Media Factory Client
Database
Media Factory API
CDN
Acquisition API
1. Back-end integration to upload files
External partners
2. Plan to support resumable uploads
Database
Media Factory Client
Storage
Media Factory API
Distribution API
CDN
Acquisition API
Transcoding APIMedia Factory API
Media Factory API
1. All NYTimes business logics
Interact with our internal APIs
Define which presets will be used based on
job type (Standard, 360)
http://github.com/nytimes/video-presets
Transcoding API
Distribution API
Acquisition API
Transcoding API
Storage
Media Factory Client
Media Factory API
CDN
Database
Transcoding API
1. Integration with multiple encoding cloud
services
2. Reliability & Scalability
3. Define a common Job specification
4. Define a common Preset specification
Transcoding API - Job Example
{
"provider": "elastictranscoder",
"source": "s3://somebucket/folder/my_video.mov",
"streamingParams": {
"playlistFileName": "hls/playlist.m3u8",
"segmentDuration": 5,
"protocol": "hls"
}
"outputs": [
{"preset": "720p_mp4", "fileName": "my_video_720p.mp4"},
{"preset": "1080p_mp4", "fileName": "my_video_1080p.mp4"},
{"preset": "256p_hls", "fileName": "hls/my_video_480p.m3u8"},
{"preset": "480p_hls", "fileName": "hls/my_video_480p.m3u8"},
{"preset": "720p_hls", "fileName": "hls/my_video_720p.m3u8"},
{"preset": "1080p_hls", "fileName": "hls/my_video_1080p.m3u8"},
{"preset": "2160p_hls", "fileName": "hls/my_video_2160p.m3u8"}
]
}
Transcoding API - Preset Example
"providers": ["elastictranscoder", "elementalconductor", "encodingcom", "zencoder"],
"preset": {
"name": "sample_preset",
"description": "This is an example preset",
"container": "mp4",
"profile": "Main", "profileLevel": "3.1",
"rateControl": "VBR",
"video": {
"height": "720", "width": "1080",
"codec": "h264", "bitrate": "1000000",
"gopSize": "90", "gopMode": "fixed",
"interlaceMode": "progressive"
},
"audio": {
"codec": "aac",
"bitrate": "64000"
}
Transcoding API
1. Integration with multiple encoding cloud
services
2. Reliability & Scalability
3. Define a common Job specification
4. Define a common Preset specification
5. http://nyti.ms/mediafactory
The Distribution API
Database
Media Factory API Distribution API
Acquisition API
Media Factory Client
Transcoding API
Storage
CDN
Distribution API
1. Fast file transfer leveraging Aspera protocol
2. Plan to support distribution to our partners
Youtube, Facebook, other partners
3. Plan to support to multiple CDNs
Just a recap!
Distribution API
Acquisition API
Transcoding API
Storage
Media Factory Client
Media Factory API
CDN
Database
Future
1. Video Quality
Classify into groups
VMAF, Reingest on the Media Factory API
2. Open Source
Distribution API
Acquisition API
3. Snickers (http://github.com/snickers/snickers)
We’re hiring
nyti.ms/technology
@NYTDevs | developers.nytimes.com
Stay updated
open.blogs.nytimes.com
@NYTDevs | developers.nytimes.com
Connect with us on Slack!
http://video-dev.org
@NYTDevs | developers.nytimes.com
Thank you!
{ , } /flavioribeiro
{ , } /dayvson

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé MochtarTestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
 
JUC 2015 Pipeline Scaling
JUC 2015 Pipeline ScalingJUC 2015 Pipeline Scaling
JUC 2015 Pipeline Scaling
 
Container BoM Inspection with TERN
Container BoM Inspection with TERNContainer BoM Inspection with TERN
Container BoM Inspection with TERN
 
WebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differencesWebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differences
 
Ci with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgiumCi with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgium
 
Streaming in grails
Streaming in grailsStreaming in grails
Streaming in grails
 
DCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best PracticesDCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best Practices
 
Continuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL ServerContinuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL Server
 
Janus conf19: TUTORIAL: KITE with network-instrumentation
Janus conf19: TUTORIAL: KITE with network-instrumentationJanus conf19: TUTORIAL: KITE with network-instrumentation
Janus conf19: TUTORIAL: KITE with network-instrumentation
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
 
ContainerDays Boston 2015: "Continuous Delivery with Containers" (Nick Gauthier)
ContainerDays Boston 2015: "Continuous Delivery with Containers" (Nick Gauthier)ContainerDays Boston 2015: "Continuous Delivery with Containers" (Nick Gauthier)
ContainerDays Boston 2015: "Continuous Delivery with Containers" (Nick Gauthier)
 
Distro Recipes 2013 : Make Debian and compiler agnostic
Distro Recipes 2013 : Make Debian and  compiler agnostic Distro Recipes 2013 : Make Debian and  compiler agnostic
Distro Recipes 2013 : Make Debian and compiler agnostic
 
TYPO3 & Composer
TYPO3 & ComposerTYPO3 & Composer
TYPO3 & Composer
 
Drone Continuous Integration
Drone Continuous IntegrationDrone Continuous Integration
Drone Continuous Integration
 
Automating Compliance with InSpec - Chef Singapore Meetup
Automating Compliance with InSpec - Chef Singapore MeetupAutomating Compliance with InSpec - Chef Singapore Meetup
Automating Compliance with InSpec - Chef Singapore Meetup
 
Squid 3 for windows blogbudaqdegil.blogspot.com
Squid 3 for windows blogbudaqdegil.blogspot.comSquid 3 for windows blogbudaqdegil.blogspot.com
Squid 3 for windows blogbudaqdegil.blogspot.com
 
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
 
CI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins PipelineCI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins Pipeline
 
Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017
 
2016 Q1 - WebRTC testing State of The Art
2016 Q1 - WebRTC testing State of The Art2016 Q1 - WebRTC testing State of The Art
2016 Q1 - WebRTC testing State of The Art
 

Semelhante a Building a Video Encoding Pipeline at The New York Times

Evolving Your Distributed Cache In A Continuous Delivery World: Tyler Vangorder
Evolving Your Distributed Cache In A Continuous Delivery World: Tyler VangorderEvolving Your Distributed Cache In A Continuous Delivery World: Tyler Vangorder
Evolving Your Distributed Cache In A Continuous Delivery World: Tyler Vangorder
Redis Labs
 
Upgrade to HTML5 Video
Upgrade to HTML5 VideoUpgrade to HTML5 Video
Upgrade to HTML5 Video
steveheffernan
 
Nuxeo - Digital Asset Management
Nuxeo - Digital Asset ManagementNuxeo - Digital Asset Management
Nuxeo - Digital Asset Management
Thomas Roger
 

Semelhante a Building a Video Encoding Pipeline at The New York Times (20)

Html5 Open Video Tutorial
Html5 Open Video TutorialHtml5 Open Video Tutorial
Html5 Open Video Tutorial
 
Performance Analysis of Various Video Compression Techniques
Performance Analysis of Various Video Compression TechniquesPerformance Analysis of Various Video Compression Techniques
Performance Analysis of Various Video Compression Techniques
 
DevOPS training - Day 1/2
DevOPS training - Day 1/2DevOPS training - Day 1/2
DevOPS training - Day 1/2
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
 
Media Content Delivery Systems
Media Content Delivery SystemsMedia Content Delivery Systems
Media Content Delivery Systems
 
Comment améliorer le quotidien des Développeurs PHP ?
Comment améliorer le quotidien des Développeurs PHP ?Comment améliorer le quotidien des Développeurs PHP ?
Comment améliorer le quotidien des Développeurs PHP ?
 
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 -  Rock Solid Deployment of Symfony AppsSymfony Live NYC 2014 -  Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
 
Securing applications
Securing applicationsSecuring applications
Securing applications
 
A Survey of Container Security in 2016: A Security Update on Container Platforms
A Survey of Container Security in 2016: A Security Update on Container PlatformsA Survey of Container Security in 2016: A Security Update on Container Platforms
A Survey of Container Security in 2016: A Security Update on Container Platforms
 
Craft 2019 - “The Upside Down” Of The Web - Video technologies
Craft 2019 - “The Upside Down” Of The Web - Video technologiesCraft 2019 - “The Upside Down” Of The Web - Video technologies
Craft 2019 - “The Upside Down” Of The Web - Video technologies
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
ReproNow—Save Time Reproducing and Triaging Security Bugs
ReproNow—Save Time Reproducing and Triaging Security BugsReproNow—Save Time Reproducing and Triaging Security Bugs
ReproNow—Save Time Reproducing and Triaging Security Bugs
 
Evolving Your Distributed Cache In A Continuous Delivery World: Tyler Vangorder
Evolving Your Distributed Cache In A Continuous Delivery World: Tyler VangorderEvolving Your Distributed Cache In A Continuous Delivery World: Tyler Vangorder
Evolving Your Distributed Cache In A Continuous Delivery World: Tyler Vangorder
 
Securing Legacy CFML Code
Securing Legacy CFML CodeSecuring Legacy CFML Code
Securing Legacy CFML Code
 
Technology And Life
Technology And LifeTechnology And Life
Technology And Life
 
Technology And Life
Technology And LifeTechnology And Life
Technology And Life
 
Real-time Code Sharing Service for one-to-many coding classes
Real-time Code Sharing Service for one-to-many coding classesReal-time Code Sharing Service for one-to-many coding classes
Real-time Code Sharing Service for one-to-many coding classes
 
Upgrade to HTML5 Video
Upgrade to HTML5 VideoUpgrade to HTML5 Video
Upgrade to HTML5 Video
 
Video Killed My Data Plan: Helsinki
Video Killed My Data Plan: HelsinkiVideo Killed My Data Plan: Helsinki
Video Killed My Data Plan: Helsinki
 
Nuxeo - Digital Asset Management
Nuxeo - Digital Asset ManagementNuxeo - Digital Asset Management
Nuxeo - Digital Asset Management
 

Mais de Flávio Ribeiro

BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-PeerBemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
Flávio Ribeiro
 
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividadeTest Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
Flávio Ribeiro
 

Mais de Flávio Ribeiro (15)

Snickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media EncodingSnickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media Encoding
 
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
 
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-PeerBemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
 
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e LinuxDesenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
 
stewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomaliasstewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomalias
 
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividadeTest Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação Python
 
Linux em Sistemas Embarcados
Linux em Sistemas EmbarcadosLinux em Sistemas Embarcados
Linux em Sistemas Embarcados
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Último (20)

CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 

Building a Video Encoding Pipeline at The New York Times

  • 1. Building a Video Encoding Pipeline at The New York Times Streaming Media West, 2016
  • 2. Maxwell Dayvson Da Silva Sr. Director of Engineering http://github.com/dayvson http://twitter.com/dayvson http://dayvson.me
  • 3. Flávio Ribeiro Sr. Software Engineer http://github.com/flavioribeiro http://twitter.com/flavioribeiro http://flavioribeiro.com
  • 4. First, a little bit of history
  • 5. The Architecture of the old system Video CMS (StoryLog) NYTimes CMS (Scoop) Internal Encoding Cluster Internal Storage CDN
  • 7. The Flaws 1. The whole process relies on a filename 2. Several watch folders 3. Unstable transcoding 4. Hard to scale 5. Two CMSs are required to publish a video.
  • 8. The Flaws 1. The whole process relies on a filename 2. Several watch folders (hard to maintain) 3. Unstable transcoding (proprietary software) 4. Hard to scale (cluster in-house) 43380_1_saudi-documentary_wg_720p.mp4
  • 9. The Flaws 1. The whole process relies on a filename 2. Several watch folders (hard to maintain) 3. Unstable transcoding (proprietary software) 4. Hard to scale (cluster in-house) 43380_1_saudi-documentary_wg_720p.mp4 Production ID
  • 10. The Flaws 1. The whole process relies on a filename 2. Several watch folders (hard to maintain) 3. Unstable transcoding (proprietary software) 4. Hard to scale (cluster in-house) 43380_1_saudi-documentary_wg_720p.mp4 Version
  • 11. The Flaws 1. The whole process relies on a filename 2. Several watch folders (hard to maintain) 3. Unstable transcoding (proprietary software) 4. Hard to scale (cluster in-house) 43380_1_saudi-documentary_wg_720p.mp4 Slug
  • 12. The Flaws 1. The whole process relies on a filename 2. Several watch folders (hard to maintain) 3. Unstable transcoding (proprietary software) 4. Hard to scale (cluster in-house) 43380_1_saudi-documentary_wg_720p.mp4 Resolution
  • 13. The Flaws 1. The whole process relies on a filename 2. Several watch folders 3. Unstable transcoding 4. Hard to scale 5. Two CMS to publish a video
  • 14. The Flaws 1. Filenames 2. Several watch folders 3. U 4. Hard to scale (cluster in-house)
  • 15. The Flaws 1. The whole process relies on a filename 2. Several watch folders 3. Unstable transcoding 4. Hard to scale 5. Two CMS to publish a video
  • 17. The Flaws 1. The whole process relies on a filename 2. Several watch folders 3. Unstable transcoding 4. Hard to scale 5. Two CMS to publish a video
  • 19. The Flaws 1. The whole process relies on a filename 2. Several watch folders 3. Unstable transcoding 4. Hard to scale 5. Two CMSs to publish a video
  • 21. The Challenges 1. Fast encoding. News Clips are very time sensitive 2. Scalability 3. Reliability 4. Company-wide video transcoding solution 5. High-quality transcoding 360°, Drone footage, Live Action
  • 23.
  • 24. The Video Pipeline Distribution API Acquisition API Transcoding API Storage Media Factory Client Media Factory API CDN Database
  • 25. Media Factory Client Distribution API Acquisition API Transcoding API Storage Media Factory Client Media Factory API Database CDN
  • 26. Media Factory Client 1. EcmaScript 6 Library 2. Upload Files from Browser to S3 http://github.com/TTLabs/EvaporateJS 3. Trigger Jobs on Media Factory API 4. Used by other teams
  • 27. Acquisition API Distribution API Acquisition API Transcoding API Storage Media Factory Client Database Media Factory API CDN
  • 28. Acquisition API 1. Back-end integration to upload files External partners 2. Plan to support resumable uploads
  • 29. Database Media Factory Client Storage Media Factory API Distribution API CDN Acquisition API Transcoding APIMedia Factory API
  • 30. Media Factory API 1. All NYTimes business logics Interact with our internal APIs Define which presets will be used based on job type (Standard, 360) http://github.com/nytimes/video-presets
  • 31. Transcoding API Distribution API Acquisition API Transcoding API Storage Media Factory Client Media Factory API CDN Database
  • 32. Transcoding API 1. Integration with multiple encoding cloud services 2. Reliability & Scalability 3. Define a common Job specification 4. Define a common Preset specification
  • 33. Transcoding API - Job Example { "provider": "elastictranscoder", "source": "s3://somebucket/folder/my_video.mov", "streamingParams": { "playlistFileName": "hls/playlist.m3u8", "segmentDuration": 5, "protocol": "hls" } "outputs": [ {"preset": "720p_mp4", "fileName": "my_video_720p.mp4"}, {"preset": "1080p_mp4", "fileName": "my_video_1080p.mp4"}, {"preset": "256p_hls", "fileName": "hls/my_video_480p.m3u8"}, {"preset": "480p_hls", "fileName": "hls/my_video_480p.m3u8"}, {"preset": "720p_hls", "fileName": "hls/my_video_720p.m3u8"}, {"preset": "1080p_hls", "fileName": "hls/my_video_1080p.m3u8"}, {"preset": "2160p_hls", "fileName": "hls/my_video_2160p.m3u8"} ] }
  • 34. Transcoding API - Preset Example "providers": ["elastictranscoder", "elementalconductor", "encodingcom", "zencoder"], "preset": { "name": "sample_preset", "description": "This is an example preset", "container": "mp4", "profile": "Main", "profileLevel": "3.1", "rateControl": "VBR", "video": { "height": "720", "width": "1080", "codec": "h264", "bitrate": "1000000", "gopSize": "90", "gopMode": "fixed", "interlaceMode": "progressive" }, "audio": { "codec": "aac", "bitrate": "64000" }
  • 35. Transcoding API 1. Integration with multiple encoding cloud services 2. Reliability & Scalability 3. Define a common Job specification 4. Define a common Preset specification 5. http://nyti.ms/mediafactory
  • 36. The Distribution API Database Media Factory API Distribution API Acquisition API Media Factory Client Transcoding API Storage CDN
  • 37. Distribution API 1. Fast file transfer leveraging Aspera protocol 2. Plan to support distribution to our partners Youtube, Facebook, other partners 3. Plan to support to multiple CDNs
  • 38. Just a recap! Distribution API Acquisition API Transcoding API Storage Media Factory Client Media Factory API CDN Database
  • 39. Future 1. Video Quality Classify into groups VMAF, Reingest on the Media Factory API 2. Open Source Distribution API Acquisition API 3. Snickers (http://github.com/snickers/snickers)
  • 42. Connect with us on Slack! http://video-dev.org @NYTDevs | developers.nytimes.com
  • 43. Thank you! { , } /flavioribeiro { , } /dayvson