{"id":13618132,"url":"https://github.com/alfg/docker-nginx-vod-module","last_synced_at":"2025-04-07T11:31:40.009Z","repository":{"id":52148300,"uuid":"110498959","full_name":"alfg/docker-nginx-vod-module","owner":"alfg","description":"A Dockerized NGINX build of the nginx-vod-module","archived":false,"fork":false,"pushed_at":"2021-04-07T08:05:26.000Z","size":29,"stargazers_count":37,"open_issues_count":1,"forks_count":21,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-22T16:52:52.821Z","etag":null,"topics":["dash","docker","hls","mss","nginx","vod"],"latest_commit_sha":null,"homepage":"https://github.com/alfg/docker-nginx-vod-module","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alfg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-11-13T04:09:46.000Z","updated_at":"2024-05-05T15:03:26.000Z","dependencies_parsed_at":"2022-09-08T17:10:46.360Z","dependency_job_id":null,"html_url":"https://github.com/alfg/docker-nginx-vod-module","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfg%2Fdocker-nginx-vod-module","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfg%2Fdocker-nginx-vod-module/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfg%2Fdocker-nginx-vod-module/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfg%2Fdocker-nginx-vod-module/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alfg","download_url":"https://codeload.github.com/alfg/docker-nginx-vod-module/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247644098,"owners_count":20972223,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dash","docker","hls","mss","nginx","vod"],"created_at":"2024-08-01T20:01:55.065Z","updated_at":"2025-04-07T11:31:39.720Z","avatar_url":"https://github.com/alfg.png","language":"Python","funding_links":[],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"# Docker NGINX VOD Module\n\n[![Build Status](https://travis-ci.org/alfg/docker-nginx-vod-module.svg?branch=master)](https://travis-ci.org/alfg/docker-nginx-vod-module)\n[![Docker Automated build](https://img.shields.io/docker/automated/alfg/nginx-vod-module.svg)](https://hub.docker.com/r/alfg/nginx-vod-module/builds/)\n\nA Dockerized NGINX build with the `nginx-vod-module` and `ngx_aws_auth` for serving VOD content to DASH, HLS, and MSS.\n\n`nginx-vod-module` is configured in remote-mode with `ngx_aws_auth` to securely serve content stored in a private S3 bucket.\n\n\n# Setup\n#### Requirements\n* Docker\n* AWS Account for S3\n* Python 2.7\n\n#### Setup AWS Credentials\n* Create an AWS account and S3 Bucket (private)\n* Create a user via IAM with Programmatic Access and read access to the S3 Bucket\n* Run `python scripts/generate_signing_key.py -k \u003caws secret access key\u003e -r \u003caws region\u003e` to generate a signing_key and key_scope.\n\n#### Setup Server\n* Configure `docker-compose.yml` with the following environment variables:\n```\n- AWS_ACCESS_KEY=\u003caws access key\u003e\n- AWS_S3_BUCKET=\u003caws s3 bucket\u003e\n- AWS_SIGNING_KEY=\u003caws signing key from script\u003e\n- AWS_KEY_SCOPE=\u003caws key scope from script\u003e\n```\n\n* Start server:\n```\ndocker-compose up\n```\n\n* Test\nUpload an MP4 to your S3 bucket and load the manifest to test different outputs:\n\n* DASH - http://localhost:8080/dash/video.mp4/manifest.mpd\n* HLS - http://localhost:8080/hls/video.mp4/master.m3u8\n* MSS - http://localhost:8080/mss/video.mp4/manifest\n\n```\nλ curl -I http://localhost:8080/dash/video.mp4/manifest.mpd\nHTTP/1.1 200 OK\n```\n\nUse one of the players below to test playback.\n\n#### Setup CDN\nTODO\n\n# Demo\n\n| Type | Source | URL |\n| ---- | --- | --- |\n| DASH | Origin | [Shaka Player](https://shaka-player-demo.appspot.com/demo/#asset=https://vod.herokuapp.com/dash/videos/tears-of-steel/tears-of-steel_,h264_baseline_360p_600.mp4,h264_main_480p_1000.mp4,h264_main_720p_3000.mp4,h264_main_1080p_6000.mp4,audio.mp4,.urlset/manifest.mpd;lang=en-US) |\n| HLS  | Origin | [HLS.js PLayer](https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fvod.herokuapp.com%2Fhls%2Fvideos%2Ftears-of-steel%2Ftears-of-steel_%2Ch264_baseline_360p_600.mp4%2Ch264_main_480p_1000.mp4%2Ch264_main_720p_3000.mp4%2Ch264_main_1080p_6000.mp4%2Caudio.mp4%2C.urlset%2Fmaster.m3u8\u0026enableStreaming=true\u0026autoRecoverError=true\u0026enableWorker=true\u0026dumpfMP4=false\u0026levelCapping=-1) |\n| MSS  | Origin | [HASPlayer.js](http://orange-opensource.github.io/hasplayer.js/1.13.0/samples/DemoPlayer/index.html?url=https://vod.herokuapp.com/mss/videos/tears-of-steel/tears-of-steel_,h264_baseline_360p_600.mp4,h264_main_480p_1000.mp4,h264_main_720p_3000.mp4,h264_main_1080p_6000.mp4,audio.mp4,.urlset/manifest) |\n| DASH | CDN | [Shaka Player](https://shaka-player-demo.appspot.com/demo/#asset=https://d22kgg8psbxs19.cloudfront.net/dash/videos/tears-of-steel/tears-of-steel_,h264_baseline_360p_600.mp4,h264_main_480p_1000.mp4,h264_main_720p_3000.mp4,h264_main_1080p_6000.mp4,audio.mp4,.urlset/manifest.mpd;lang=en-US) |\n| HLS  | CDN | [HLS.js Player](https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fd22kgg8psbxs19.cloudfront.net%2Fhls%2Fvideos%2Ftears-of-steel%2Ftears-of-steel_%2Ch264_baseline_360p_600.mp4%2Ch264_main_480p_1000.mp4%2Ch264_main_720p_3000.mp4%2Ch264_main_1080p_6000.mp4%2Caudio.mp4%2C.urlset%2Fmaster.m3u8\u0026enableStreaming=true\u0026autoRecoverError=true\u0026enableWorker=true\u0026dumpfMP4=false\u0026levelCapping=-1) |\n| MSS  | CDN | [HASPlayer.js](http://orange-opensource.github.io/hasplayer.js/1.13.0/samples/DemoPlayer/index.html?url=https://d22kgg8psbxs19.cloudfront.net/mss/videos/tears-of-steel/tears-of-steel_,h264_baseline_360p_600.mp4,h264_main_480p_1000.mp4,h264_main_720p_3000.mp4,h264_main_1080p_6000.mp4,audio.mp4,.urlset/manifest) |\n\n\n# Test Players\nHTML5 Players for testing.\n\n* https://shaka-player-demo.appspot.com\n* http://video-dev.github.io/hls.js/demo/\n* http://orange-opensource.github.io/hasplayer.js/ \n\n\n# TODO\n* DRM Example\n* Test with S3-compatible APIs (Digital Ocean Spaces)\n\n\n# References\n* https://www.nginx.com\n* https://github.com/kaltura/nginx-vod-module\n* https://github.com/anomalizer/ngx_aws_auth\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falfg%2Fdocker-nginx-vod-module","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falfg%2Fdocker-nginx-vod-module","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falfg%2Fdocker-nginx-vod-module/lists"}