{"id":28343007,"url":"https://github.com/dash-industry-forum/livesim2","last_synced_at":"2026-02-05T18:01:28.656Z","repository":{"id":125454215,"uuid":"593670480","full_name":"Dash-Industry-Forum/livesim2","owner":"Dash-Industry-Forum","description":"DASH Live Source Simulator v2 in Go","archived":false,"fork":false,"pushed_at":"2026-02-04T09:30:51.000Z","size":35374,"stargazers_count":55,"open_issues_count":11,"forks_count":10,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-02-04T09:34:17.026Z","etag":null,"topics":["aac","ac-4","avc","cenc","drm","hevc","imsc1","isobmff","mp4","mpeg-dash","mpeg-h","stpp","video-streaming","wvtt"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dash-Industry-Forum.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-26T15:23:04.000Z","updated_at":"2026-02-04T09:17:13.000Z","dependencies_parsed_at":"2023-10-12T23:41:41.193Z","dependency_job_id":"4a34cb87-ba59-4806-9142-81121d151d2e","html_url":"https://github.com/Dash-Industry-Forum/livesim2","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/Dash-Industry-Forum/livesim2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dash-Industry-Forum%2Flivesim2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dash-Industry-Forum%2Flivesim2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dash-Industry-Forum%2Flivesim2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dash-Industry-Forum%2Flivesim2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dash-Industry-Forum","download_url":"https://codeload.github.com/Dash-Industry-Forum/livesim2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dash-Industry-Forum%2Flivesim2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29128621,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T17:12:17.649Z","status":"ssl_error","status_checked_at":"2026-02-05T17:11:23.670Z","response_time":65,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["aac","ac-4","avc","cenc","drm","hevc","imsc1","isobmff","mp4","mpeg-dash","mpeg-h","stpp","video-streaming","wvtt"],"created_at":"2025-05-27T06:27:27.857Z","updated_at":"2026-02-05T18:01:28.649Z","avatar_url":"https://github.com/Dash-Industry-Forum.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Test](https://github.com/Dash-Industry-Forum/livesim2/workflows/Go/badge.svg)\n[![golangci-lint](https://github.com/Dash-Industry-Forum/livesim2/actions/workflows/golangci-lint.yml/badge.svg)](https://github.com/Dash-Industry-Forum/livesim2/actions/workflows/golangci-lint.yml)\n[![GoDoc](https://godoc.org/github.com/Dash-Industry-Forum/livesim2?status.svg)](http://godoc.org/github.com/Dash-Industry-Forum/livesim2)\n[![Go Report Card](https://goreportcard.com/badge/github.com/Dash-Industry-Forum/livesim2)](https://goreportcard.com/report/github.com/Dash-Industry-Forum/livesim2)\n\n# livesim2 - the second generation DASH Live Source Simulator\n\n`livesim2` is a new and improved version of the\n[DASH-IF live source simulator][1].\n\n*Test it at [https://livesim2.dashif.org](https://livesim2.dashif.org) or set up your own server\nusing your own DASH content or test content available\nat [livesim-content](https://github.com/Dash-Industry-Forum/livesim-content).\nSee the [wiki](https://github.com/Dash-Industry-Forum/livesim2/wiki) for more info.*\n\nAs the original simulator ([livesim1][1]), the output is a wall-clock (UTC) synchronized\ninfinite linear stream of segments. This achieved by looping input VoD DASH assets,\nand changing time stamps so that an infinite \"live\" stream is available.\nThe synchronization is done modulo asset duration,\nfor example: a 1-hour asset restarts every hour on full hours, and a 30s asset\nrestarts every 30s on full and half minutes. If there is a clock display in the video, and\nthe length is full minutes or similar, it is\ntherefore easy to directly see how long the system delay is from publishing to\nscreen presentation. The very short example assets bundled with the code are only\n8s long, which means that they restart every time the UTC time is a multiple of 8s,\nrelative to the Epoch start 1970-01-01:00:00:00Z.\n\nTo provide full UTC time stamps on-screen and the possibility to test subtitles,\nlivesim2 has a new feature for generating subtitles for any number of languages.\nThis is done by a URL parameter like `/timesubsstpp_en,sv` which will result in\ntwo `stpp` (segmented TTML) subtitle tracks with with language codes \"en\" and \"sv\", respectively.\nThere is a corresponding setting for `wvtt` (segmented WebVTT) subtitles using `/timesubswvtt_en,sv`.\n\nThe new `livesim2` software is written in Go instead of Python and designed to handle\ncontent in a more flexible and versatile way. It is intended to be very easy to install and deploy locally\nsince it is compiled into a single binary that serves the content via a built-in\nperformant HTTP/2 server. There is also a very simple way of setting up HTTPS\nusing Let´s Encrypt.\n\nSimilarly to [livesim1][1], the output is highly configurable by adding parameters inside the URLs.\nThese parameters are included not only in the MPD requests, but in\nall segment requests allowing the server to be stateless, and\nbe able to generate streams with a huge number of\nparameter variations. Currently, not all parameters of [livesim1][1] are implemented,\nbut there are also new parameters like the generated subtitles mentioned above.\n\nThe [URL wiki page][urlparams] lists what is available and the served page `/urlgen`\nmakes it easy to construct URLs to play the content with specific parameters set.\n\nBeside `livesim2` there is a tool called `dashfetcher` in this repo.\nThat tool can be used to download the MPD and all segments of a DASH VoD asset.\n\n## livesim2 server\n\nThe server is configured in one or more ways in increasing priority:\n\n1. Default values\n2. In a config file\n3. Via command-line parameters\n4. With environment variables\n\nMajor values to configure are:\n\n* the top directory `vodroot` for searching for VoD assets to be used\n* the HTTPS `domains` if Let's Encrypt automatic certificates are used\n  * `certpath` and `keypath` if HTTPS is used with manually downloaded certificates\n  * the HTTP/HTTPS `port` if `domains` is not being used (default: 8888)\n\nOnce the server is started, it will scan the file tree starting from\n`vodroot` and gather metadata about all DASH VoD assets it finds.\nCurrently, only source VoD assets using SegmentTimeline with `$Time$` and\nSegmentTemplate with `$Number$`  are supported.\n\n### Command-line parameters\n\nA complete list of parameters, and their access\nvia the command line looks like:\n\n```sh\n  --certpath string      path to TLS certificate file (for HTTPS). Use domains instead if possible\n  --cfg string           path to a JSON config file\n  --domains string       One or more DNS domains (comma-separated) for auto certificate from Lets Encrypt\n  --host string          host (and possible prefix) used in MPD elements. Overrides auto-detected full scheme://host\n  --keypath string       path to TLS private key file (for HTTPS). Use domains instead if possible.\n  --livewindow int       default live window (seconds) (default 300)\n  --logformat string     log format [text, json, pretty, discard] (default \"text\")\n  --loglevel string      log level [DEBUG, INFO, WARN, ERROR] (default \"INFO\")\n  --maxrequests int      max nr of request per IP address per 24 hours\n  --playurl string       URL template to play mpd. %s will be replaced by MPD URL (default \"https://reference.dashif.org/dash.js/latest/samples/dash-if-reference-player/index.html?mpd=%s\u0026autoLoad=true\u0026muted=true\")\n  --port int             HTTP port (default 8888)\n  --repdataroot string   Representation metadata root directory. \"+\" copies vodroot value. \"-\" disables usage. (default \"+\")\n  --reqlimitint int      interval for request limit i seconds (only used if maxrequests \u003e 0) (default 86400)\n  --reqlimitlog string   path to request limit log file (only written if maxrequests \u003e 0)\n  --scheme string        scheme used in Location and BaseURL elements. If empty, it is attempted to be auto-detected\n  --timeout int          timeout for all requests (seconds) (default 60)\n  --vodroot string       VoD root directory (default \"./vod\")\n  --writerepdata         Write representation metadata if not present\n```\n\n### Quicker load by using metadata files\n\nFor assets with many segments, the scanning process can take a considerable time.\nThe possibility to generate and read extra representation metadata files has\ntherefore been added. For representation `repX`, the corresponding metadata file\nis `repX_data.json.gz`. As the file extensions indicates, these files are gzipped\nJSON files. To generate such files, the option `writerepdata` must be on.\nThe root directory for such files is by default the same as the VoD root directory,\nmeaning that the metadata files will be in the same directories as the corresponding\nMPDs. However, it is possible to use another path, by specifying `repdataroot`.\n\nOnce the server has started, it is possible to find out information about the server and\nthe assets using the root HTTP endpoint\n\n* /\n\nthat in turn points to:\n\n* /urlgen\n* /assets\n* /config\n* /healthz\n* /metrics\n\nand links to the Wiki page for more information.\n\nIt is also possible to explore the file tree and play Vod assets by starting at\n\n* /vod/...\n\nFinally, any VoD MPD like `/vod/cfhd/stream.mpd` is available as a live stream by\nreplacing `/vod/` with `livesim2` e.g. `/livesim2/cfhd/stream.mpd`.\n\n### Backwards compatibility with livesim\n\nFor backwards compatibility with the first version of `livesim` where `/livesim` was used\nas a prefix for simulated live output, and `/dash/vod` was the path to the VoD assets,\nthese two paths are redirected by the server with an HTTP 302 response as:\n\n    /livesim/* -\u003e /livesim2/*\n    /dash/vod/* -\u003e /vod/*\n\n### MPD Restrictions\n\nThe following restrictions apply to the VoD manifest to be used with livesim2\n\n* live-profile (separate segments)\n* one Period with all representations of \"same\" duration\n* no BaseURL elements\n* no Location elements\n* initialization and media attributes in SegmentTemplate on AdaptationSet level\n\n### Special Time Test Parameter `nowMS`\n\nThe query string parameter `?nowMS=...` can be used in any request\nto set the wall-clock time that `livesim2` uses as reference time. The time is measured with respect to\nthe 1970 Epoch start, and makes it possible to test time-dependent requests in a deterministic way.\n\n## Get Started\n\nInstall Go 1.23 or later.\n\nThen run\n\n```sh\n\u003e go mod tidy\n```\n\nto fetch and install all dependencies.\n\nTo build `dashfetcher` and `livesim2` you can use the `Makefile` like\n\n```sh\n\u003e make build\n```\n\nto create binaries in the `/out` directory with embedded version numbers.\n\nDuring development it may be easier to use the usual go commands:\n\n```sh\n\u003e cd cmd/dashfetcher\n\u003e go build .\n\u003e cd ../../cmd/livesim2\n\u003e go build .\n```\n\nor compile and run directly with `go run .`.\n\n### HTTPS with automatic certificates\n\nTo enable HTTPS in an easy manner, make sure that you have DNS pointing to your machine,\nand that ports 80 and 443 are forwarded. Then use the parameter\n`--domains=your.domain.com,second.domain.com` to automatically fetch TLS certificates\nfrom Let's Encrypt for your domains to this machine. The certificates are automatically\nrenewed before they expire.\n\n#### HTTPS with manual certificates\n\nThe old-fashioned way of using manually acquired TLS certificates is also supported.\nUse the two parameters `certpath` and `keypath` to point to the respective files,\nand set the `port` to 443.`\n\n## Content\n\nThe content must be a DASH VoD asset in `isoff-live` format\n(individual segment files) with either `SegmentTimeline with $Time$` or\n`SegmentTemplate with $Number$`. The video segments duration must have an\nexact average duration so that the total duration is the number of segments\ntime that average. The total duration must be an integral number of milliseconds.\nFor example, an asset with alternating segment duration sof 8s and 4s, is fine\nas long as there are an equal number of each leading so that the avererage duration is\n6s. The segment duration is not allowed to vary more than 50% compared to that\naverage duration in order for livesim2 to be able to generate MPDs with SegmentTemplate\nwith \\$Number\\$.\n\nThe input audio segment do not need to follow the duration of the video segments,\nalthough it is beneficial if they are the same, as for example 1.92s segments for\n50fps video and 48kHz AAC audio. If the audio segment duration is not identical to\nthe corresponding video segment, the audio will be resegmented as to follow the\nvideo segments as far as possible. Every audio segment will start less than one audio\nframe after the video segment starts.\n\nThere are multiple ways to get content to the livesim2 server.\n\n1. Use the bundled test content (only 8s or 12s long)\n2. Fetch content that was used with [livesim1][1] from\n   github at [livesim-content][livesim-content]\n3. Use the `dashfetcher` tool to download a DASH asset\n4. Use an existing VoD asset in `isoff-live` profile\n\nlivesim2 will scan all the segments of all representations and store metadata about\neach segments timing in memory.\n\nTo avoid doing this at every startup, livesim2 supports storing and reading\nsuch representation data from a file. The generation of such data is controlled via the `writerepdata` and `repdataroot` configuration parameters.\n\nIf such files are detected at startup, they will be used instead of scanning the files,\nunles the `writerepdata` parameter is set.\n\n### Bundled test streams with the livesim2 server\n\nA few very short (8s) test assets are bundled with the code.\nThese makes it possible to start the server and get live output by running\n\n```sh\n\u003e cd cmd/livesim2\n\u003e ./livesim2 --vodroot=app/testdata/assets\n```\n\nThe log will list the available assets and the port where the server runs.\n\nThey can then be streamed via URLs like:\n\n```link\nhttp://localhost:8888/livesim2/WAVE/vectors/cfhd_sets/12.5_25_50/t3/2022-10-17/stream.mpd\nhttp://localhost:8888/livesim2/testpic_2s/Manifest_thumbs.mpd\nhttp://localhost:8888/livesim2/testpic_8s/Manifest.mpd\n```\n\nThe default pattern provides MPDs with SegmentTemplate using `$Number$`. To stream with\nSegmentTimeline with `$Time$`, one should add the parameter `/segtimeline_1` between\n`livesim2` and the start of the asset path. For SegmentTimeline with `$Number$`, use\n`/segtimelinenr_1` instead. Other parameters are added in a similar way.\n\nAdding longer assets somewhere under the `vodroot` results in longer loops.\nAll sources are NTP synchronized (using the host machine clock) with a initial start\ntime given by availabilityStartTime and wrap every sequence duration after that.\n\n#### Edit lists\n\nCMAF allows two types of edit lists.\n\n1. Time-shift for audio priming in audio streams\n2. Time-shift for video to initial zero-valued presentation time\n\nThere are two test assets included for these cases\n\n1. `WAVE/av/combined.mpod` has shifted audio where the first two frames are used for priming. This is seen\n    in the MPD which has a shorter initial segment. This is reflected in the livesim2 MPD where all\n    segments are shifted by this amount\n2. `bbb_hevc_ac3_8s/manifest.mpd` has an edit list for video which shifts all composition time offsets\n    so that the first presentation time is zero. This shift is kept in the MPD and in the `sidx` boxes\n    of the output from livesim2\n\n### livesim-content at Github\n\nIn the repo [livesim-content][livesim-content], the content that was used for the\n[livesim1 online][1-online] service is being gathered to make it easy to reproduce\nthe same use cases.\n\nAll content and features are not yet (2023-08-08) in place, but should be so before end\nof October 2023.\n\nTo download and use that content, run\n\n```sh\ngit clone https://github.com/Dash-Industry-Forum/livesim-content.git\n```\n\nand then set `--vodroot` to the `livesim-content` top directory or include that in\na bigger file tree.\n\n### dashfetcher tool\n\nThe tool `dashfetcher` fetches DASH VoD assets via HTTP given an MPD URLs.\nCurrently it supports MPDs with SegmentTimeline with `$Time$` and\nSegmentTemplate with `$Number$`. The assets must have no explicit `\u003cBaseURL\u003e` elements to\nwork properly. With the `-a/--auto` option, the path to the asset is preserved\nas much as possible and adapted to the local path.\n\nFiles already downloaded will not be downloaded again, unless `-f/--force` is\nused. As an example, to download a CTA-WAVE asset one can run\n\n```sh\ndashfetcher --auto https://dash.akamaized.net/WAVE/vectors/cfhd_sets/12.5_25_50/t3/2022-10-17/stream.mpd\n```\n\nwhich will result in a locally stored DASH VoD asset in the directory\n\n```sh\n./vod/WAVE/vectors/cfhd_sets/12.5_25_0t3/2022-10-17/\n```\n\nwith an MPD called `stream.mpd` and the segments stored in subdirectories named after their relative\nURLs. The download URL is added to a file `mpdlist.json` which is read by livesim2, to provide\ninformation about the asset.\n\nOne can have multiple MPDs in the same asset directory and they may share some representations.\nThat is an easy way to have variants with different representation combinations.\n\n#### Running dashfetcher\n\n`dashfetcher` was created to facilitate download of DASH assets with lots of small segment files. One particular such source was the CTA-WAVE test content. However, that content is now also available as zip-files, so it is more efficient to download an unzip these files instead of making individual downloads of the segments.\n\nFor example, the asset above is also\navailable at `https://dash.akamaized.net/WAVE/vectors/cfhd_sets/12.5_25_50/t3/2022-10-17/t3.zip`.\n\nThe `dashfetcher` binary can be found as `out/dashfetcher` after `make build`.\n\n```sh\n\u003e dashfetcher --help\n```\n\nwill provide a long help text that explains how to use it and will also provide an example URL to CTA-WAVE content.\n\n### CMAF Ingest Support\n\nlivesim2 includes CMAF Ingest support (version 1.1), allowing it to act as a CMAF ingest source\nthat pushes live segments to a configurable destination. This is useful for testing CMAF ingest\nreceivers and validating ingest workflows.\n\nThe CMAF ingest functionality converts livesim2's VoD-based live streams into CMAF segments\nand sends them via HTTP PUT requests to a destination URL in real-time.\n\n#### CMAF Ingest REST API\n\nThe REST API is available at `/api/cmaf-ingests` and supports the following operations:\n\n**POST /api/cmaf-ingests** - Create and start a CMAF ingest session\n\nRequest body:\n\n```json\n{\n  \"destRoot\": \"http://receiver-server.com/upload\",\n  \"destName\": \"channel_name\",\n  \"livesimURL\": \"/livesim2/testpic_2s/Manifest.mpd\",\n  \"user\": \"optional_username\",\n  \"password\": \"optional_password\",\n  \"duration\": 60,\n  \"testNowMS\": null,\n  \"streamsURLs\": false\n}\n```\n\nFields:\n\n- `destRoot` (required): Destination URL root where segments will be sent\n- `destName` (required): Destination channel/asset name\n- `livesimURL` (required): Full livesim2 URL path to an MPD (without scheme/host)\n- `user` (optional): Username for basic authentication\n- `password` (optional): Password for basic authentication\n- `duration` (optional): Duration in seconds to send segments (0 = infinite)\n- `testNowMS` (optional): Test mode start time (ms since epoch) for step-wise testing\n- `streamsURLs` (optional): Use `Streams(track.cmfv)` format instead of numbered segments\n\n**GET /api/cmaf-ingests/{id}** - Get status and report of an active ingest session\n\n**GET /api/cmaf-ingests/{id}/step** - Step to next segment (only in test mode with `testNowMS`)\n\n**DELETE /api/cmaf-ingests/{id}** - Stop an ingest session\n\n#### cmaf-ingest-receiver Tool\n\nA standalone receiver tool is included at `cmd/cmaf-ingest-receiver/` for testing CMAF ingest.\nIt receives CMAF segments sent by livesim2 (or other CMAF sources) and stores them locally,\ngenerating MPD manifests automatically.\n\nBuild with:\n\n```sh\nmake build\n```\n\nThe binary will be at `out/cmaf-ingest-receiver`.\n\nRun with:\n\n```sh\nout/cmaf-ingest-receiver -port 8080 -storage ./segments -prefix /upload\n```\n\nKey options:\n\n```sh\n-port 8080           # HTTP receiver port\n-storage \"./storage\" # Storage root directory\n-prefix \"/upload\"    # URL prefix for ingest endpoints\n-tsbd 90             # TimeShiftBufferDepth in seconds\n-loglevel \"info\"     # Log level (debug, info, warn)\n-config \"\"           # Path to JSON config file\n```\n\nThe receiver creates a directory structure like:\n\n```\nstorage/\n└── channel/\n    ├── manifest.mpd             # Auto-generated MPD with $Number$\n    ├── manifest_timeline_nr.mpd # Auto-generated MPD with SegmentTimeline\n    └── track/\n        ├── init.cmfv     # Init segment\n        ├── nr.cmfv       # Media segment nr\n        └── ...\n```\n\n#### CMAF Ingest Example\n\nStart the cmaf-ingest-receiver:\n\n```sh\nout/cmaf-ingest-receiver -port 8080 -storage ./segments -prefix /upload\n```\n\nStart livesim2:\n\n```sh\nout/livesim2 --vodroot=cmd/livesim2/app/testdata/assets\n```\n\nCreate a CMAF ingest session:\n\n```sh\ncurl -X POST http://localhost:8888/api/cmaf-ingests \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"destRoot\": \"http://localhost:8080/upload\",\n    \"destName\": \"test_channel\",\n    \"livesimURL\": \"/livesim2/testpic_2s/Manifest.mpd\",\n    \"duration\": 60\n  }'\n```\n\nwhith should return a response like\n\n```json\n{\n  \"$schema\":\"http://localhost:8888/api/schemas/CmafIngestDeleteResponseBody.json\",\n  \"destRoot\":\"http://localhost:8080/upload\",\n  \"destName\":\"test_channel\",\n  \"livesim-url\":\"/livesim2/testpic_2s/Manifest.mpd\",\n  \"id\":\"1\"}\n```\n\nYou can check the status by using the ingester `id`:\n\n```sh\ncurl http://localhost:8888/api/cmaf-ingests/1\n```\n\nThe receiver will store segments in `./segments/test_channel/` and generate playable MPD files.\n\n## Running tests\n\nThe unit tests can be run from the top directory with the usual recursive Go test command\n`go test ./...` or with the make targets for testing, linting, and coverage:\n\n```sh\n\u003e make test\n\u003e make check\n\u003e make coverage\n```\n\n## Deployment\n\nBoth `dashfetcher` and `livesim2` can be compiled to single binaries\non any Go compiler target platform such as Windows, MacOS, and Linux.\nSince the result is a single binary it is easy to start it anywhere.\n\nOn Linux, `livesim2` can be run as a `systemd` service.\nMore information can be found in the [deployment/README.md](deployment/README.md) file.\n\nTo get information about the available assets and other information\naccess the server's root URL.\n\n### Docker\n\nA `Dockerfile` is also provided. It builds a stand-alone livesim2 service.\nA new image is automatically built and uploaded to the Github Container Registry (ghcr.io)\nfor each new release. To use the v1.7.0 image with a folder `test_streams` with\nVoD assets, you can use docker compose to mount `test_streams` in the\ndefault folder path `/vod` by using a compose.yml file like this:\n\n```yaml\nservices:\n  livesim2:\n    image: ghcr.io/dash-industry-forum/livesim2/livesim2:v1.7.0\n    ports:\n      - 8888:8888\n    volumes:\n      - ./test_streams:/vod/test_streams\n    restart: always\n```\n\n## List of functionality and options\n\nThe most direct information about the URL parameters\nand how to find them, is available via the `/urlgen/`\npage that can be reached once the server is running.\nThe livesim2 online page is [/urlgen/][urlgen].\n\nThe URL parameters are also listed on this project's Wiki page\n[URL-parameters][urlparams]. Some more information\nabout how they are working is also available on the Wiki.\n\n## Project and plan for new features/enhancement\n\nThe sponsored transition from livesim to livesim2 is covered on a [wiki page][l2-status].\nOn the [livesim2 project page][l2-project] the status of issues and proposed new ideas are listed.\nDraft ideas are changed into [livesim2 issues][l2-issues] if prioritized.\n\n## Sponsoring\n\nIt is possible to sponsor the project for further development. See the\n[SPONSORING.md](SPONSORING.md) file for more information.\n\n## License\n\nSee [LICENSE.md](LICENSE.md).\n\n[1]: https://github.com/Dash-Industry-Forum/dash-live-source-simulator\n[1-online]: https://livesim.dashif.org\n[urlparams]: https://github.com/Dash-Industry-Forum/livesim2/wiki/URL-Parameters\n[livesim-content]: https://github.com/Dash-Industry-Forum/livesim-content\n[l2-project]: https://github.com/orgs/Dash-Industry-Forum/projects/7\n[l2-issues]: https://github.com/Dash-Industry-Forum/livesim2/issues\n[l2-status]: https://github.com/Dash-Industry-Forum/livesim2/wiki/Sponsored-transition-from-livesim1-to-livesim2\n[urlgen]: https://livesim2.dashif.org/urlgen/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdash-industry-forum%2Flivesim2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdash-industry-forum%2Flivesim2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdash-industry-forum%2Flivesim2/lists"}