{"id":27918503,"url":"https://github.com/motionspell/dvb-mabr-tool","last_synced_at":"2025-05-06T18:22:53.896Z","repository":{"id":248544828,"uuid":"760070248","full_name":"MotionSpell/DVB-MABR-Tool","owner":"MotionSpell","description":"DVB MABR Open-Source Tool","archived":false,"fork":false,"pushed_at":"2025-02-26T18:12:25.000Z","size":81,"stargazers_count":0,"open_issues_count":5,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-26T19:25:37.212Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/MotionSpell.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-19T18:18:46.000Z","updated_at":"2025-02-26T18:12:29.000Z","dependencies_parsed_at":"2024-07-23T18:44:38.728Z","dependency_job_id":"ad3e75fd-ff03-4b42-9caf-32bf3e4d6378","html_url":"https://github.com/MotionSpell/DVB-MABR-Tool","commit_stats":null,"previous_names":["motionspell/dvb-mabr-tool"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MotionSpell%2FDVB-MABR-Tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MotionSpell%2FDVB-MABR-Tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MotionSpell%2FDVB-MABR-Tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MotionSpell%2FDVB-MABR-Tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MotionSpell","download_url":"https://codeload.github.com/MotionSpell/DVB-MABR-Tool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252741829,"owners_count":21797092,"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":[],"created_at":"2025-05-06T18:22:53.292Z","updated_at":"2025-05-06T18:22:53.871Z","avatar_url":"https://github.com/MotionSpell.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DVB-MABR-Tool\n\nWelcome to the [DVB-MABR Validation Tool](https://dvb.org/news/rfp-released-for-dvb-mabr-validation-tool/).\n\nThe repository contains a Python script (`app.py`), a configuration file (`config.ini`), and three scripts for launching the application in the different modes described in the DVB's RfP a/o the V2V (Verification and Validation) document.\n\n## Description\n\nThe Python script `app.py` is designed to configure and run a media processing application using the [GPAC](https://gpac.io) library. It loads configurations from the provided `config.ini` file and/or from the command-line, processes command-line arguments, and initiates the media processing session accordingly. The application can run in two modes: server or gateway.\n\n## Requirements\n\n- Python 3.x\n- GPAC library (libgpac.so/.dll/.dylib):\n   1. installed with a prefix detected by `pkg-config` and\n   2. accessible from your shell (Windows: ```export PATH=``` ; Linux: ```export LD_LIBRARY_PATH=``` ; MacOS: ```export DYLD_LIBRARY_PATH=```)\n- A MPEG-DASH player (GPAC (`gpac -play http://127.0.0.1:8080/Manifest.mpd`)), [dash.js](https://reference.dashif.org/dash.js/latest/samples/dash-if-reference-player/index.html?mpd=http://127.0.0.1:8080/Manifest.mpd), Theoplayer, ...) for viewing the stream (optional)\n\n## Usage\n\n1. **Configuration Setup:**\n   - If necessary modify the `config.ini` file to customize settings according to your requirements. Ensure that all necessary parameters are correctly set for the chosen mode (`server` or `gateway`).\n   \n2. **Running Examples:**\n   - The repository provides a script (`run_servers.sh`) using the TAD streaming content to demonstrate the sequential execution of server and gateway modes. This script can be executed to automatically run the servers.\n   - Example usage:\n     ```bash\n     ./run_servers.sh\n     ```\n     Then choose which TAD stream to execute:\n\n     ```bash\n     Choose a stream source:\n     A: Live segment template without manifest updates\n     B: Live segment template with manifest updates every 30s\n     C: Live segment timeline with manifest updates every 30s\n     D: Multi-period, 1 period per minute\n     E: low-latency single rate\n     F: low-latency multi rate\n     ```\n\n     then run this command    \n     ```bash\n      ./scripts/launch_gateway.sh \n     ``` \n     \n     to launch the gateway with default configuration.\n\n3. **Viewing the Stream:**\n   - After launching the application, you can use [dash.js](https://reference.dashif.org/dash.js/latest/samples/dash-if-reference-player/index.html?mpd=http://127.0.0.1:8080/Manifest.mpd) or the GPAC player (`gpac -play http://127.0.0.1:8080/Manifest.mpd`) to view the stream. The playback link will be provided in the terminal output for gateway mode.\n   - The default playback URL is `http://127.0.0.1:8080/Manifest.mpd`.\n   - When using dash.js you may need to install a CORS extension for your browser.\n\n4. **Advanced mode: manual launch of the Application:**\n   - Execute the appropriate launch script based on the desired mode:\n     - For running in server mode with default multicast adreeses/options, execute ```python3 app.py config.ini mode=server stream_src=\"http_source_link\" ```.\n     - For running in gateway mode, execute  with default multicast adreeses/options```python3 app.py config.ini mode=gateway ```.\n   - Example usage:\n     ```bash\n     ./scripts/launch_server.sh\n     ./scripts/launch_gateway.sh\n     ```\n   - Notes on configurable options:\n     - To select how the URI of objects delived should be constructed use the option: \"fdt_absolute_url\" in the global configuration file.\n     - To select how the manifests and init segments are delivered use the option: \"use_inband_transport\" in the global configuration file.\n\n## Note\n\nTroubleshoot:\n- Ensure that the GPAC library is properly installed on your system.\n- Additional parameters and configurations can be added to the `config.ini` file as needed.\n- The GPAC Python bindings use ctypes for interfacing with libgpac filter session, while providing an object-oriented wrapper hiding all ctypes internals and GPAC C design.\n- The timeout of the repair mode depends on [this patch](https://github.com/gpac/gpac/compare/master...rbouqueau:buildbot-mabr_client_object_timeout?expand=1) which is not yet in GPAC master.\n\nYou must:\n- Use the bindings which come along with your GPAC installation, otherwise ABI/API might mismatch, resulting in crashes.\n- Use a regular GPAC build, not a static library version (so python bindings are not compatible with static or mp4box-only build).\n- Make sure the libgpac shared library is known to your dynamic library loader.\n\nThe binding is called `libgpac.py`, and is by default available in GPAC share folder, for example `/usr/local/share/gpac/python`. It is hosted in GPAC source tree under share/python.\n\nThe Python module handler is furthermore very likely not configured to look at this directory, in `app.py` we have to indicate where to look:\n     ```\n        sys.path.append('/usr/local/share/gpac/python')\n     ```\n\nAlternatively you can use pip to install the binding.\n\nFor more information on this visit:\n- the wiki page: [wiki](https://wiki.gpac.io/Howtos/python/)\n- or this post:  [github discussion](https://github.com/gpac/gpac/issues/2161#issuecomment-1087281505)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmotionspell%2Fdvb-mabr-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmotionspell%2Fdvb-mabr-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmotionspell%2Fdvb-mabr-tool/lists"}