{"id":37639079,"url":"https://github.com/dbono711/srt-processor","last_synced_at":"2026-01-16T11:14:13.081Z","repository":{"id":251428868,"uuid":"824997666","full_name":"dbono711/srt-processor","owner":"dbono711","description":"Streamlit application for processing SRT session statistics","archived":false,"fork":false,"pushed_at":"2025-09-08T14:29:20.000Z","size":92,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-08T16:33:05.601Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dbono711.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-07-06T13:37:37.000Z","updated_at":"2025-09-08T14:29:16.000Z","dependencies_parsed_at":"2025-09-08T16:12:08.152Z","dependency_job_id":"7f677ff3-6693-4c47-875c-09ea966bf61d","html_url":"https://github.com/dbono711/srt-processor","commit_stats":null,"previous_names":["dbono711/srt-processor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dbono711/srt-processor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbono711%2Fsrt-processor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbono711%2Fsrt-processor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbono711%2Fsrt-processor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbono711%2Fsrt-processor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dbono711","download_url":"https://codeload.github.com/dbono711/srt-processor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbono711%2Fsrt-processor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478161,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"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":[],"created_at":"2026-01-16T11:14:13.010Z","updated_at":"2026-01-16T11:14:13.071Z","avatar_url":"https://github.com/dbono711.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# srt-processor\n\n## Overview\n\nInteractive Streamlit application for analyzing [Secure Reliable Transport (SRT)](#what-is-srt) flows, enabling users to explore the intricacies of SRT through live streaming sessions.\n\nThe application allows content to be received via live SRT streams (as either caller or listener) and analyzed for real-time analysis. Under the hood, the applicaiton is invoking the [srt-live-transmit](https://github.com/Haivision/srt/blob/master/docs/apps/srt-live-transmit.md#command-line-options) application to receive the SRT stream and is using the statistics output from the `srt-live-transmit` application to provide the data for real-time analysis, providing a comprehensive view of SRT statistics.\n\n## Prerequisites\n\n- Docker\n\n## Container Ports\n\nThe container exposes the following ports for connectivity:\n\n- (TCP) port 8501 for accessing the Streamlit application\n- (UDP) ports 9000-9100 for SRT sessions\n\n## Building the Docker Image Locally\n\nTo build the Docker image locally from the Dockerfile included in this repository, follow these steps:\n\n1. Clone the repository:\n\n    ```shell\n    git clone https://github.com/dbono711/srt-processor.git\n    cd srt-processor\n    ```\n\n2. Build the Docker image:\n\n    ```shell\n    docker build -t srt-processor:latest .\n    ```\n\n3. Run the Docker container with port forwarding (adjust accordingly for mapping to available ports on your host).\n\n    ```shell\n    docker run -d -p 8501:8501/tcp -p 9000-9100:9000-9100/udp --cap-add=NET_ADMIN --name srt-processor srt-processor:latest\n    ```\n\n    \u003e **Note**: The ```CAP_ADD=NET_ADMIN``` argument is required in order to utilize the network emulation options.\n\n### Optional Feature: Enable LLM-Powered Analysis\n\nTo enable the LLM-powered SRT session analysis feature, provide your OpenAI API key as an environment variable:\n\n```shell\ndocker run -d -p 8501:8501/tcp -p 9000-9100:9000-9100/udp --cap-add=NET_ADMIN \\\n  -e OPENAI_API_KEY=your_openai_api_key_here \\\n  --name srt-processor srt-processor:latest\n```\n\n\u003e **Note**: The LLM-powered analysis feature is optional. The application will function normally without it, but you'll have access to intelligent insights and recommendations about your SRT session performance when the API key is provided.\n\n## Pulling the Docker Image from Docker Hub\n\nAlternatively, you can pull the pre-built Docker image from Docker Hub:\n\n\u003e **Note**: The Docker Hub image is built for AMD64 architecture only. If you're running on ARM64 (e.g., Apple Silicon Macs), please [build locally](#building-the-docker-image-locally) instead.\n\n1. Pull the Docker image from Docker Hub:\n\n    ```shell\n    docker pull dbono711/srt-processor:latest\n    ```\n\n2. Run the Docker container with port forwarding (adjust accordingly for mapping to available ports on your host).\n\n    ```shell\n    docker run -d -p 8501:8501/tcp -p 9000-9100:9000-9100/udp --cap-add=NET_ADMIN --name srt-processor dbono711/srt-processor:latest\n    ```\n\n    \u003e **Note**: The ```CAP_ADD=NET_ADMIN``` argument is required in order to utilize the network emulation options.\n\n### Optional Feature: Enable LLM-Powered Analysis\n\nTo enable the LLM-powered SRT session analysis feature, provide your OpenAI API key as an environment variable:\n\n```shell\ndocker run -d -p 8501:8501/tcp -p 9000-9100:9000-9100/udp --cap-add=NET_ADMIN \\\n  -e OPENAI_API_KEY=your_openai_api_key_here \\\n  --name srt-processor dbono711/srt-processor:latest\n```\n\n\u003e **Note**: The LLM-powered analysis feature is optional. The application will function normally without it, but you'll have access to intelligent insights and recommendations about your SRT session performance when the API key is provided.\n\n## Accessing the Application\n\nAfter starting the Docker container, you can access the Streamlit application by navigating to: ```http://\u003chost ip\u003e:8501```\n\n## Example: Streaming to SRT Processor as a listener\n\nYou can use FFmpeg to stream media to the SRT Processor application when it's configured as a listener. Here's an example of how to set up an SRT caller flow to stream video to the application:\n\n1. First, ensure the SRT Processor application is running and configured in Listener mode on the desired port (e.g., 9000).\n\n2. Use the following FFmpeg command to stream a video file to the SRT Processor:\n\n    ```shell\n    docker run --rm -v $(pwd):$(pwd) -w $(pwd) \\\n        --name ffmpeg-stream jrottenberg/ffmpeg:4.4-ubuntu \\\n        -stats \\\n        -re \\\n        -i sample_1280x720_surfing_with_audio.mp4 \\\n        -c:v libx264 -b:v 2500k -g 60 -keyint_min 60 \\\n        -profile:v main \\\n        -preset fast \\\n        -f mpegts \"srt://\u003ccontainer-ip\u003e:9000?pkt_size=1316\"\n    ```\n\n    Replace `\u003ccontainer-ip\u003e` with the IP address of your SRT Processor container, and adjust the input file path as needed.\n\n    Assumes a file named ```sample_1280x720_surfing_with_audio.mp4``` is present in the current directory. Replace with your own file path as needed.\n\n3. Command breakdown:\n   - `-stats`: Shows encoding progress statistics\n   - `-re`: Reads input at native frame rate (simulates a live source)\n   - `-c:v libx264`: Uses H.264 video codec\n   - `-b:v 2500k`: Sets video bitrate to 2500 kbps\n   - `-g 60 -keyint_min 60`: Sets GOP size and minimum keyframe interval to 60 frames\n   - `-profile:v main`: Uses the \"main\" H.264 profile\n   - `-preset fast`: Balances encoding speed and compression efficiency\n   - `-f mpegts`: Sets output format to MPEG Transport Stream\n   - `pkt_size=1316`: Optimizes SRT packet size for network transmission\n\n4. Once the stream starts, you should see the SRT statistics updating in the SRT Processor web interface.\n\n## Development\n\nThis repository includes a [docker-compose.dev.yml](docker-compose.dev.yml) file for creating a consistent and reproducible development environment using Docker Compose.\n\n### Development Prerequisites\n\nBefore proceeding, ensure you have the following installed:\n\n- Docker\n- Git\n\n### Development Setup\n\n1. Clone the Repository\n\nClone the repository to your local machine using the following command:\n\n```git clone https://github.com/dbono711/srt-processor.git```\n\n2. Optional: Enable LLM-Powered Analysis\n\nTo enable the LLM analysis feature during development, set your OpenAI API key as an environment variable prior to running the development container:\n\n```shell\nexport OPENAI_API_KEY=your_openai_api_key_here\n```\n\n\u003e **Note**: This step is optional. The application will function normally without it, but you'll have access to intelligent insights and recommendations about your SRT session performance when the API key is provided.\n\n3. Start the Development Container\n\nNavigate to the cloned repository folder and run the following command:\n\n```shell\ncd srt-processor\n# Start development environment\nmake dev\n```\n\n4. View the Application\n\n- Once the development environment is up and running, you can access the Streamlit application by navigating to: ```http://\u003chost ip\u003e:8501```\n\n5. Stop the Development Container\n\n- To stop the development container, run the following command:\n\n```shell\nmake stop\n```\n\n## What is SRT?\n\n[Secure Reliable Transport (SRT)](https://github.com/Haivision/srt) is an open-source protocol developed by Haivision in 2012, designed to optimize live video streaming over unpredictable IP networks, particularly the public internet. Released to the industry through the SRT Alliance in 2017, SRT has rapidly become a critical tool for industries like broadcasting, OTT streaming, and enterprise communications. Its core features include low-latency transmission, robust error correction, and end-to-end encryption, making it ideal for secure and reliable live video transport.\n\nSRT leverages Automatic Repeat reQuest (ARQ) and other techniques to ensure high-quality video delivery even over unreliable networks. Its focus on security through 128/256-bit AES encryption ensures that video streams are protected from unauthorized access and tampering. These attributes make SRT highly valuable for live broadcasts, remote production, and cloud-based workflows.\n\nWithin the media value chain, SRT plays a key role in both content contribution and distribution, allowing broadcasters to move video from field locations to broadcast centers or cloud platforms with reliability and low latency. Its open-source nature and ability to integrate into IP-based workflows position SRT as a flexible and cost-effective alternative to traditional video transmission methods like satellite, and proprietary protocols such as RTMP and Zixi.\n\nSRT’s rapid adoption by the industry, combined with its scalability and strong performance in challenging network environments, has made it a crucial component in the evolution of digital video broadcasting, particularly as the industry shifts toward cloud-based and IP-driven infrastructures.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbono711%2Fsrt-processor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdbono711%2Fsrt-processor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbono711%2Fsrt-processor/lists"}