Drupal, NetFlix, & Chill: Adaptive Bitrate Video Streaming Stephen Barker, Digital Frontiers Media, Inc. Dave Kopecek, Aisle 8, Inc. 1
The Problem Existing Site 400 HD videos Slow video loading/buffering/playback latency (10-11 seconds average; sometimes up to 30 seconds!) Stuttering video playback Web server disk space being exhausted Budget Two-Pronged Issue of User Experience (stutter) v. Site Maintainability 2
Does NetFlix hate you? Image: cnet.com 3
Adaptive Bitrate Streaming Image: encoding.com 4
HLS Video File Structure Image: apple.com 5
Stutter Solution: Amazon Elastic Transcoder 6
Transcoder Workflow 7
AWS Elastic Transcoder HLS Presets 8
Pipelines and Jobs 9
AmazonS3 Events 10
AWS Lambda 11
Node.js Lambda Function 12
Lambda Initiated HLS Files 13
Standard Drupal File Handling 14
AmazonS3 Module 15
AmazonS3 CORS Upload Module 16
Tying It All Together 17
CloudFront CDN Setup in Minutes 18
Two URL Issues 19
hook_file_url_alter 20
hook_file_url_alter (cont.) 21
Finishing Touches Taking care of all existing files. • Bulk upload all files from Drupal files directory to S3 • UPDATE file_managed SET uri = REPLACE(uri, 'public', 's3') WHERE INSTR(filemime, 'video') > 0; Lambda cleanup functions. • If Elastic Transcoder is succesful, then move original mp4 to an Archive bucket. • If Elastic Transcoder fails send Amazon SNS push notification 22
Results 23
Results Both New and Existing Videos now served via fast Amazon CloudFront CDN! End User Experience - No stuttering video playback or video stoppage! Maintainer Experience - No change from standard Drupal node creation. Single video upload. ZERO web server disk space used and nearly infinite S3 expandability! Super cheap and easy to maintain! 24
Stephen Barker Dave Kopecek stephen@digitalfrontiersmedia.com dave@aisle8.net https://twitter.com/DigitalFrontier https://twitter.com/davekopecek 25
Recommend
More recommend