https://github.com/0necontroller/stream-sndbox
Custom Video upload (s3), transcoding (ffmpeg) and streaming using HLS
https://github.com/0necontroller/stream-sndbox
docker hls minio video
Last synced: about 1 month ago
JSON representation
Custom Video upload (s3), transcoding (ffmpeg) and streaming using HLS
- Host: GitHub
- URL: https://github.com/0necontroller/stream-sndbox
- Owner: 0necontroller
- Created: 2025-06-06T08:26:28.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-06T12:40:18.000Z (about 1 year ago)
- Last Synced: 2025-08-19T14:05:30.900Z (10 months ago)
- Topics: docker, hls, minio, video
- Language: TypeScript
- Homepage:
- Size: 41 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Streamer Sandbox
Streamer Sandbox is a versatile project designed to handle video streaming and file uploads efficiently. It leverages modern technologies to provide a robust and scalable solution for managing video content.
## Features
- **Video Streaming**: Supports HLS (HTTP Live Streaming) for adaptive bitrate streaming.
- **Multiple Packager Options**: Choose between FFmpeg or Google's Shaka Packager for HLS content.
- **Adaptive Bitrate Streaming**: Provides multiple quality levels when using Shaka Packager.
- **Quality Selection**: Interactive quality selector for videos transcoded with Shaka Packager.
- **File Uploads**: Handles file uploads with ease, including large files.
- **AWS S3 Integration**: Utilizes AWS S3 for secure and scalable storage.
- **Dockerized Environment**: Simplifies development and deployment with Docker.
- **TypeScript Support**: Ensures type safety and modern JavaScript features.
## Project Structure
```
├── app.ts
├── dev.sh
├── docker-compose.override.yml
├── docker-compose.yml
├── Dockerfile
├── Dockerfile.dev
├── package.json
├── pnpm-lock.yaml
├── prod.sh
├── README.md
├── tsconfig.json
├── controllers/
│ └── upload.Controller.ts
├── lib/
│ ├── environments.ts
│ └── s3client.ts
├── public/
│ └── index.html
├── router/
│ └── index.ts
│
└──
```
## Getting Started
### Prerequisites
- Node.js
- Docker
- AWS account (for S3 integration)
### Installation
1. Clone the repository:
```bash
git clone https://github.com/your-repo/streamer-sandbox.git
```
2. Install dependencies:
```bash
pnpm install
```
3. Set up environment variables:
- Create a `.env` file in the root directory.
- Add your AWS credentials and other necessary configurations.
## Packager Options
### FFmpeg (Default)
FFmpeg is used by default to generate HLS content. It produces a basic HLS stream with segments.
### Google Shaka Packager
Shaka Packager is an advanced media packaging tool that offers:
- Multiple video qualities (low, medium, high)
- Adaptive bitrate streaming
- DASH and HLS support from the same source content
- Interactive quality selection in the player
- Better compatibility with various players and devices
When using Shaka Packager, the system will:
1. Create multiple quality renditions of your video
2. Generate both DASH and HLS manifests
3. Add quality selection controls to the player
4. Store packaging metadata for better organization
### Running the Project
#### Development
Run the development server:
```bash
./dev.sh
```
#### Production
Build and run the production server:
```bash
./prod.sh
```
#### Docker
Build and run the Docker container:
```bash
docker-compose up
```
## Contributing
Contributions are welcome! Please follow these steps:
1. Fork the repository.
2. Create a new branch for your feature or bug fix.
3. Submit a pull request.
## License
This project is licensed under the MIT License. See the LICENSE file for details.