NGINX offers a number of streaming features through the RTMP module and NGINX Plus has additional modules. The RTMP module delivers streams over the RTMP protocol and can dynamically convert RTMP into HLS and MPEG-DASH in real time. NGINX Plus can stream HLS and HDS from .mp4 and .f4f files. However, a few missing features have kept streaming service providers from building their service on NGINX. For example, NGINX Plus can transmux to HLS and HDS but not VOD content to DASH. Also, in serving HLS segments NGINX Plus relies on URL query strings that include start= and end=, which makes the streams hard to scale to a larger audience through a CDN cache.
In this session, I'll show how to build a streaming server using open source NGINX with FFmpeg and GPAC's MP4Box, which can dynamically transmux .mp4 files to HLS and DASH. A FastCGI script and FFmpeg can dynamically generate a manifest file, and a FastCGI script with FFmpeg/GPAC can dynamically cut .mp4 files into smaller segments and repackage them for HLS and DASH upon request.