Skip to content

unlux/video-transcoding-pipeline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jan 27, 2025
a9ca90b · Jan 27, 2025

History

16 Commits
Nov 14, 2024
Nov 12, 2024
Nov 6, 2024
Nov 6, 2024
Jan 27, 2025
Nov 7, 2024
Nov 6, 2024
Nov 6, 2024
Nov 6, 2024

Repository files navigation

Video Transcoding Pipeline

A highly efficient and cost-effective video transcoding pipeline leveraging AWS services. This repository simplifies the video transcoding workflow by running containers directly on the same EC2 instance as the code, avoiding ECS costs. The pipeline is designed to handle video transcoding tasks using AWS SQS for communication and scheduling.

Features

  • AWS SQS Integration: Easily manage message queues for video transcoding tasks.
  • Efficient Resource Usage: Containers are spawned directly on the EC2 instance, reducing costs by avoiding ECS.
  • Customizable: Adapt the pipeline to fit your transcoding needs and system requirements.

Prerequisites

  • AWS account with the following configured:
    • SQS Queue
    • EC2 instance
    • S3 buckets
  • Docker installed on your EC2 instance

Installation

  1. Clone this repository:

    git clone https://github.com/unlux/video-transcoding-pipeline.git
    cd video-transcoding-pipeline
  2. Install dependencies:

    npm install
  3. Set up your AWS credentials and configuration:

    • Add your AWS access key, secret key, and region to the environment variables as needed.
  4. Configure the pipeline settings in the provided configuration file (e.g., config.json or .env).

Usage

  1. Start the consumer:

  2. Send a video transcoding input bucket, it will generate anSQS queue. The message should be like:

    {
      "input": "s3://your-bucket/input-video.mp4",
      "output": "s3://your-bucket/output-video.mp4",
      "settings": {
        "resolution": "1080p",
        "codec": "h264",
        "bitrate": "4000k"
      }
    }
  3. check the output bucket:

Configuration

  • SQS Queue: Update the SQS queue URL in the configuration file.
  • Docker Settings: Ensure Docker is configured to run the required containers.

Directory Structure

video-transcoding-pipeline
├── bun.lockb
├── container
│   ├── Dockerfile
│   ├── index.js
│   ├── package.json
│   └── package-lock.json
├── package.json
├── package-lock.json
├── README.md
├── src
│   ├── docker.ts
│   └── index.ts
└── tsconfig.json

Acknowledgments

  • AWS SQS for reliable message queuing.
  • Docker for containerized transcoding.
  • NixOS for its reproducible development environment.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published