Florida DrupalCamp 2016
Parent Track: 
Development & Performance

Sometimes for various reasons (legal, etc.), your client's video-based site is not able to use YouTube or Vimeo, etc. and must self-host the videos.  When those videos are in HD, Drupal media fields out of the box don't make the choices easy.  You can upload the high resolution HD video to the field and risk losing all your mobile users due to high latency, buffering, and low-bandwidth issues that make the video experience intolerable for them, or you can upload a lower resolution version that looks bad on high resolution monitors connected to systems with gigabit ethernet connections.  And if you do decide to upload the full HD versions, be prepared to blow through your webhosting disk space and bandwidth resource allocations in the blink of an eye.

This is a case study on how just a small amount of work turned a frustrating, site-killing user experience with 400 HD videos into a performance powerhouse with playback latency times being reduced up to 90%, mobile device playback improved with consistent experiences even when there's little cellular signal available, and disk space and bandwidth costs reduced to some of the cheapest rates possible through the implementation of AWS, S3, Lambda, Elastic Transcoder, CloudFront, and HLS video.  Work done in collaboration with Aisle 8.

For those who asked, here is the link to the original example Lambda Node.js code for sending a job to Elastic Transcoder that inspired this workflow:  https://github.com/aws/aws-sdk-js/issues/455 .