Nginx Vod Module 1.2
Nginx Vod Module 1.2
com/kaltura/nginx-vod-module
kaltura / nginx-vod-module 46 98 28
nginx-vod-module / +
erankor Merge pull request #152 from kaltura/fix-conf-template Latest commit 8f0822f on Sep 29
static add config files for integration with kaltura CE 10 months ago
1 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
2 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
ngx_http_vod_request_parse.c use the uri for the drm info cache 3 months ago
ngx_http_vod_request_parse.h use the uri for the drm info cache 3 months ago
ngx_perf_counters_x.h support async file open via thread pools 6 months ago
README.md
3 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
nginx-vod-module
Features
On-the-fly repackaging of MP4 files to DASH, HDS, HLS, MSS
Working modes:
Fallback support for file not found in local/mapped modes (useful in multi-datacenter
environments)
Support for variable segment lengths - enabling the player to select the optimal bitrate fast,
without the overhead of short segments for the whole duration of the video
4 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
HLS: Mux audio and video streams from separate MP4 files (HLS/HDS)
Limitations
Only AAC audio is supported (MP3 audio is not)
Track selection and playback rate change are not supported in progressive download
Installation
Build
./configure --add-module=/path/to/nginx-vod-module
make
make install
For asynchronous I/O support add (highly recommended, local and mapped modes
only)
5 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
For asynchronous file open using thread pool add (nginx 1.7.11+, local and mapped
modes only)
RHEL/CentOS RPM
If you are using RHEL or CentOS 6, you can install by setting up the repo:
If you are using RHEL/CentOS7, install the kaltura-release RPM and modify /etc/yum.repos.d
/kaltura.repo to read:
baseurl = http://installrepo.kaltura.org/releases/rhel7/RPMS/$basearch/
6 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
baseurl = http://installrepo.kaltura.org/releases/latest/RPMS/$basearch/
Ubuntu NOTE: You must also make sure the multiverse repo is enabled in /etc/apt/sources.list
URL structure
Where:
7 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
Multi URLs are used to encode several URLs on a single URL. A multi URL can be used to specify the
URLs of several different MP4 files that should be included together in a DASH MPD for example.
The suffix (can be changed with vod_multi_uri_suffix) indicates that the URL should be
treated as a multi URL.
clipFrom - an offset in milliseconds since the beginning of the video, where the generated stream
should start. For example, will generate a stream that starts 10 seconds
into the video.
clipTo - an offset in milliseconds since the beginning of the video, where the generated stream
should end. For example, will generate a stream truncated to 60 seconds.
tracks - can be used to select specific audio/video tracks. The structure of parameter is:
For example, will select the first video track and
first audio track. The default is to include all tracks.
8 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
Filename structure
Where:
basename + extension - the set of options is packager specific (the list below applies to the
default settings):
dash - manifest.mpd
hds - manifest.f4m
hls master playlist - master.m3u8
hls media playlist - index.m3u8
mss - manifest
fileparams - can be used to select specific files (URLs) when using multi URLs. For example,
manifest-f1.mpd will return an MPD only from the first URL.
trackparams - can be used to select specific audio/video tracks. For example, manifest-a1.f4m will
return an F4M containing only the first audio stream. The default is to include the first audio and
first video tracks of each file. The tracks selected on the file name are AND-ed with the tracks
selected with the /tracks/ path parameter.
DRM
Nginx-vod-module has the ability to perform on-the-fly encryption for MPEG DASH (CENC) and MSS
Play Ready. The encryption is performed while serving a video/audio segment to the client, therefore,
when working with DRM it is highly recommended not to serve the content directly from nginx-
vod-module to end-users. A more scalable architecture would be to use proxy servers or a CDN in
order to cache the encrypted segments.
In order to perform the encryption, this module needs several parameters, including key & key_id,
these parameters are fetched from an external server via HTTP GET request. The hostname of that
9 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
server is configured using the vod_drm_upstream parameter, and the request uri is configured using
vod_drm_request_uri (this parameter can include nginx variables). The response of that server is a
JSON, with the following format:
- base64 encoded binary data, the format of this data is drm vendor specific
- the drm system UUID, in this case, edef8ba9-79d6-4ace-a3c8-27dcd51d21ed stands
for Widevine
- base64 encoded encryption key (128 bit)
- base64 encoded key identifier (128 bit)
Performance recommendations
1. For medium/large scale deployments, don't have users play the videos directly from nginx-
vod-module. Since all the different streaming protocols supported by nginx vod are HTTP based,
they can be cached by standard HTTP proxies / CDNs. For medium scale add a layer of caching
proxies between the vod module and the end users (can use standard nginx servers with
proxy_pass & proxy_cache). For large scale deployments, it is recommended to use a CDN (such
as Akamai, Level3 etc.).
In general, it's best to have nginx vod as close as possible to where the mp4 files are stored, and
have the caching proxies as close as possible to the end users.
vod_moov_cache - saves the need to re-read the video metadata for each segment. This
cache should be rather large, in the order of GBs.
vod_response_cache - saves the responses of manifest requests. This cache may not be
10 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
required when using a second layer of caching servers before nginx vod. No need to allocate
a large buffer for this cache, 128M is probably more than enough for most deployments.
vod_path_mapping_cache - for mapped mode only, few MBs is usually enough.
nginx's open_file_cache - caches open file handles.
The hit/miss ratios of these caches can be tracked by enabling performance counters
(vod_performance_counters) and setting up a status page for nginx vod (vod_status)
3. In local & mapped modes, enable aio. - nginx has to be compiled with aio support, and it has to
be enabled in nginx conf (aio on). You can verify it works by looking at the performance counters
on the vod status page - read_file (aio off) vs. async_read_file (aio on)
4. In local & mapped modes, enable asynchronous file open - nginx has to be compiled with
threads support, and vod_open_file_thread_pool has to be specified in nginx.conf. You can verify
it works by looking at the performance counters on the vod status page - open_file vs.
async_open_file
5. The muxing overhead of the streams generated by this module can be reduced by changing the
following parameters:
HDS - set vod_hds_generate_moof_atom to off
HLS - set vod_hls_align_frames to off and vod_hls_interleave_frames to on
vod
11 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
syntax:
default:
context:
Enables the nginx-vod module on the enclosing location. Currently the allowed values for
are:
vod_mode
syntax:
default:
context: , ,
Sets the file access mode - local, remote or mapped (see the features section above for more details)
vod_status
syntax:
default:
context:
vod_multi_uri_suffix
syntax:
12 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
default:
context: , ,
A URL suffix that is used to identify multi URLs. A multi URL is a way to encode several different URLs
that should be played together as an adaptive streaming set, under a single URL. When the default
suffix is used, an HLS set URL may look like: http://host/hls/common-prefix,bitrate1,bitrate2,common-
suffix.urlset/master.m3u8
vod_segment_duration
syntax:
default:
context: , ,
vod_bootstrap_segment_durations
syntax:
default:
context: , ,
Adds a bootstrap segment duration in milliseconds. This setting can be used to make the first few
segments shorter than the default segment duration, thus making the adaptive flavor selection kick-in
earlier without the overhead of short segments throughout the video.
vod_align_segments_to_key_frames
syntax:
default:
context: , ,
13 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
When enabled, the module forces all segments to start with a key frame. Enabling this setting can
lead to differences between the actual segment durations and the durations reported in the manifest
(unless vod_manifest_segment_durations_mode is set to accurate).
vod_segment_count_policy
syntax:
default:
context: , ,
Configures the policy for calculating the segment count, for segment_duration = 10 seconds:
vod_manifest_segment_durations_mode
syntax:
default:
context: , ,
estimate - reports the duration as configured in nginx.conf, e.g. if vod_segment_duration has the
value 10000, an HLS manifest will contain #EXTINF:10
accurate - reports the exact duration of the segment, taking into account the frame durations, e.g.
for a frame rate of 29.97 and 10 second segments it will report the first segment as 10.01.
accurate mode also takes into account the key frame alignment, in case
vod_align_segments_to_key_frames is on
14 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
vod_secret_key
syntax:
default:
context: , ,
Sets the seed that is used to generate the TS encryption key, if empty, no encryption is performed.
The parameter value can contain variables, and will usually have the structure "secret-$vod_filepath".
See the list of nginx variables added by this module below.
vod_duplicate_bitrate_threshold
syntax:
default:
context: , ,
The bitrate threshold for removing identical bitrates, streams whose bitrate differences are less than
this value will be considered identical.
vod_https_header_name
syntax:
default:
context: , ,
Sets the name of an HTTP header whose existence determines whether the request was issued over
HTTPS. If not set, the decision is made according to the protocol used to connect to the nginx server.
A common scenario for using this setting is a load-balancer placed before the nginx that performs
SSL-offloading.
vod_segments_base_url
15 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
syntax:
default:
context: , ,
Sets the base URL (usually domain only) that should be used for delivering video segments. When
empty, the host header sent on the request will be used as the domain. The scheme (http/https) used
in the returned URLs is determined by:
vod_open_file_thread_pool
syntax:
default:
context: , ,
Enables the use of asynchronous file open via thread pool. The thread pool must be defined with a
thread_pool directive, if no pool name is specified the default pool is used. This directive is supported
only on nginx 1.7.11 or newer when compiling with --add-threads. Note: this directive currently
disables the use of nginx's open_file_cache by nginx-vod-module
vod_moov_cache
syntax:
default:
context: , ,
Configures the size and shared memory object name of the moov atom cache
16 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
vod_response_cache
syntax:
default:
context: , ,
Configures the size and shared memory object name of the response cache. The response cache
holds manifests and other non-video content (like DASH init segment, HLS encryption key etc.). Video
segments are not cached.
vod_initial_read_size
syntax:
default:
context: , ,
Sets the size of the initial read operation of the MP4 file.
vod_max_moov_size
syntax:
default:
context: , ,
vod_cache_buffer_size
syntax:
default:
context: , ,
17 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
Sets the size of the cache buffers used when reading MP4 frames.
vod_child_request
syntax:
default:
context:
Configures the enclosing location as handling nginx-vod module child requests (remote/mapped
modes only) There should be at least one location with this command when working in
remote/mapped modes. Note that multiple vod locations can point to a single location having
vod_child_request.
vod_child_request_path
syntax:
default:
context:
Sets the path of an internal location that has vod_child_request enabled (remote/mapped modes
only)
vod_upstream
syntax:
default:
context: , ,
Sets the upstream that should be used for reading the MP4 file (remote mode) or mapping the
request URI (mapped mode).
18 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
vod_upstream_host_header
syntax:
default:
context: , ,
Sets the value of the HTTP host header that should be sent to the upstream (remote/mapped modes
only).
vod_upstream_extra_args
syntax:
default:
context: , ,
Extra query string arguments that should be added to the upstream request (remote/mapped modes
only). The parameter value can contain variables.
vod_connect_timeout
syntax:
default:
context: , ,
Sets the timeout in milliseconds for connecting to the upstream (remote/mapped modes only).
vod_send_timeout
syntax:
default:
context: , ,
19 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
Sets the timeout in milliseconds for sending data to the upstream (remote/mapped modes only).
vod_read_timeout
syntax:
default:
context: , ,
Sets the timeout in milliseconds for reading data from the upstream (remote/mapped modes only).
vod_path_mapping_cache
syntax:
default:
context: , ,
Configures the size and shared memory object name of the path mapping cache (mapped mode
only).
vod_path_response_prefix
syntax:
default:
context: , ,
Sets the prefix that is expected in URI mapping responses (mapped mode only).
vod_path_response_postfix
syntax:
default:
context: , ,
20 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
Sets the postfix that is expected in URI mapping responses (mapped mode only).
vod_max_path_length
syntax:
default:
context: , ,
Sets the maximum length of a path returned from upstream (mapped mode only).
vod_fallback_upstream
syntax:
default:
context: , ,
Sets an upstream to forward the request to when encountering a file not found error (local/mapped
modes only).
vod_fallback_connect_timeout
syntax:
default:
context: , ,
Sets the timeout in milliseconds for connecting to the fallback upstream (local/mapped modes only).
vod_fallback_send_timeout
syntax:
default:
context: , ,
21 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
Sets the timeout in milliseconds for sending data to the fallback upstream (local/mapped modes
only).
vod_fallback_read_timeout
syntax:
default:
context: , ,
Sets the timeout in milliseconds for reading data from the fallback upstream (local/mapped modes
only).
vod_proxy_header_name
syntax:
default:
context: , ,
Sets the name of an HTTP header that is used to prevent fallback proxy loops (local/mapped modes
only).
vod_proxy_header_value
syntax:
default:
context: , ,
Sets the value of an HTTP header that is used to prevent fallback proxy loops (local/mapped modes
only).
vod_clip_to_param_name
22 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
syntax:
default:
context: , ,
vod_clip_from_param_name
syntax:
default:
context: , ,
vod_tracks_param_name
syntax:
default:
context: , ,
vod_speed_param_name
syntax:
default:
context: , ,
vod_performance_counters
23 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
syntax:
default:
context: , ,
vod_last_modified
syntax:
default:
context: , ,
Sets the value of the Last-Modified header returned on the response, by default the module does not
return a Last-Modified header. The reason for having this parameter here is in order to support
If-Modified-Since / If-Unmodified-Since. Since nginx's builtin ngx_http_not_modified_filter_module
runs before any other header filter module, it will not see any headers set by add_headers /
more_set_headers. This makes nginx always reply as if the content changed (412 for
If-Unmodified-Since / 200 for If-Modified-Since)
vod_last_modified_types
syntax:
default:
context: , ,
Sets the MIME types for which the Last-Modified header should be set. The special value "*" matches
any MIME type.
vod_drm_enabled
24 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
syntax:
default:
context: , ,
When enabled, the module encrypts the media segments according to the response it gets from the
drm upstream. Currently supported only for dash and mss (play ready).
vod_drm_clear_lead_segment_count
syntax:
default:
context: , ,
Sets the number of clear (unencrypted) segments in the beginning of the stream. A clear lead
enables the player to start playing without having to wait for the license response.
vod_drm_max_info_length
syntax:
default:
context: , ,
vod_drm_upstream
syntax:
default:
context: , ,
Sets the upstream that should be used for getting the DRM info for the file.
25 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
vod_drm_connect_timeout
syntax:
default:
context: , ,
vod_drm_send_timeout
syntax:
default:
context: , ,
vod_drm_read_timeout
syntax:
default:
context: , ,
Sets the timeout in milliseconds for reading data from the upstream.
vod_drm_info_cache
syntax:
default:
context: , ,
Configures the size and shared memory object name of the drm info cache.
26 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
vod_drm_request_uri
syntax:
default:
context: , ,
Sets the uri of drm info requests, the parameter value can contain variables. In case of multi url,
$vod_suburi will be the current sub uri (a separate drm info request is issued per sub URL)
vod_dash_absolute_manifest_urls
syntax:
default:
context: , ,
vod_dash_manifest_file_name_prefix
syntax:
default:
context: , ,
vod_dash_init_file_name_prefix
syntax:
default:
27 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
context: , ,
The name of the MP4 initialization file (an mp4 extension is implied).
vod_dash_fragment_file_name_prefix
syntax:
default:
context: , ,
vod_dash_manifest_format
syntax:
default:
context: , ,
- uses SegmentList and SegmentURL tags, in this format the URL of each fragment
is explicitly set in the MPD
- uses SegmentTemplate, reporting a single duration for all fragments
- uses SegmentTemplate and SegmentTimeline to explicitly set the duration of
the fragments
vod_hds_manifest_file_name_prefix
syntax:
28 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
default:
context: , ,
The name of the HDS manifest file (an f4m extension is implied).
vod_hds_fragment_file_name_prefix
syntax:
default:
context: , ,
vod_hds_generate_moof_atom
syntax:
default:
context: , ,
When enabled the module generates a moof atom in the HDS fragments, when disabled only an
mdat atom is generated. Turning this parameter off reduces the packaging overhead, however the
default is on since Adobe tools are generating this atom.
vod_hls_encryption_method
syntax:
default:
context: , ,
29 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
Sets the encryption method of HLS segments, allowed values are: none (default), aes-128,
sample-aes.
vod_hls_absolute_master_urls
syntax:
default:
context: , ,
When enabled the server returns absolute playlist URLs in master playlist requests
vod_hls_absolute_index_urls
syntax:
default:
context: , ,
When enabled the server returns absolute segment URLs in media playlist requests
vod_hls_absolute_iframe_urls
syntax:
default:
context: , ,
When enabled the server returns absolute segment URLs in iframe playlist requests
vod_hls_master_file_name_prefix
syntax:
default:
context: , ,
30 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
The name of the HLS master playlist file (an m3u8 extension is implied).
vod_hls_index_file_name_prefix
syntax:
default:
context: , ,
The name of the HLS media playlist file (an m3u8 extension is implied).
vod_hls_iframes_file_name_prefix
syntax:
default:
context: , ,
The name of the HLS I-frames playlist file (an m3u8 extension is implied).
vod_hls_segment_file_name_prefix
syntax:
default:
context: , ,
vod_hls_encryption_key_file_name
syntax:
default:
context: , ,
31 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
The name of the encryption key file name (only relevant when vod_secret_key is used).
vod_hls_interleave_frames
syntax:
default:
context: , ,
When enabled, the HLS muxer interleaves frames of different streams (audio / video). When disabled,
on every switch between audio / video the muxer flushes the MPEG TS packet.
vod_hls_align_frames
syntax:
default:
context: , ,
When enabled, every video / audio frame is aligned to MPEG TS packet boundary, padding is added
as needed.
vod_mss_manifest_file_name_prefix
syntax:
default:
context: , ,
Nginx variables
32 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
Note: Configuration directives that can accept variables are explicitly marked as such.
Sample configurations
Local configuration
http {
upstream fallback {
server kalhls-a-pa.origin.kaltura.com:80;
}
server {
open_file_cache max=1000 inactive=5m;
open_file_cache_valid 2m;
open_file_cache_min_uses 1;
open_file_cache_errors on;
aio on;
location /content/ {
vod hls;
vod_mode local;
vod_moov_cache moov_cache 512m;
vod_fallback_upstream fallback;
33 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
root /web/content;
gzip on;
gzip_types application/vnd.apple.mpegurl;
expires 100d;
add_header Last-Modified "Sun, 19 Nov 2000 08:52:00 GMT";
}
}
}
Mapped configuration
http {
upstream kalapi {
server www.kaltura.com:80;
}
upstream fallback {
server kalhls-a-pa.origin.kaltura.com:80;
}
server {
aio on;
location ^~ /__child_request__/ {
internal;
vod_child_request;
}
34 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
location ~ ^/p/\d+/(sp/\d+/)?serveFlavor/ {
vod hls;
vod_mode mapped;
vod_moov_cache moov_cache 512m;
vod_secret_key "mukkaukk$vod_filepath";
vod_hls_encryption_method aes-128;
vod_child_request_path /__child_request__/;
vod_upstream kalapi;
vod_upstream_host_header www.kaltura.com;
vod_upstream_extra_args "pathOnly=1";
vod_path_mapping_cache mapping_cache 5m;
vod_fallback_upstream fallback;
gzip on;
gzip_types application/vnd.apple.mpegurl;
expires 100d;
add_header Last-Modified "Sun, 19 Nov 2000 08:52:00 GMT";
}
}
}
Remote configuration
http {
upstream kalapi {
server www.kaltura.com:80;
}
server {
location ^~ /__child_request__/ {
internal;
vod_child_request;
}
35 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
location ~ ^/p/\d+/(sp/\d+/)?serveFlavor/ {
vod hls;
vod_mode remote;
vod_moov_cache moov_cache 512m;
vod_secret_key "mukkaukk$vod_suburi";
vod_hls_encryption_method aes-128;
vod_child_request_path /__child_request__/;
vod_upstream kalapi;
vod_upstream_host_header www.kaltura.com;
gzip on;
gzip_types application/vnd.apple.mpegurl;
expires 100d;
add_header Last-Modified "Sun, 19 Nov 2000 08:52:00 GMT";
}
}
}
36 of 37 11/10/2015 1:19 PM
kaltura/nginx-vod-module https://github.com/kaltura/nginx-vod-module
37 of 37 11/10/2015 1:19 PM