Merged
Conversation
- Enable CI for the dev branch. - permissions to the ffmpeg test output directory. - Update CI test video download to use H264 codec instead of AV1. - test: add 777 permissions to HLS output directory in ffmpeg test
- Sync changes of v0.1.0 PR
…line (#11) This commit introduces the foundational architecture for the video processing worker. It establishes a complete pipeline for downloading, encoding, and uploading video content using Domain-Driven Design principles. Key features added: - Infrastructure Setup: Integrated BullMQ for highly reliable background video job processing and setup PostgreSQL connection pooling. - Azure Storage Integration: Added services for fetching raw media blobs and robust uploading of generated output segments/manifests back to Azure Blob Storage. - FFmpeg HLS Processing: Added core FFmpeg adapters to handle video probing, content complexity analysis, multi-profile audio/video rendering, and HLS (m3u8) playlist generation. - DDD Architecture: Organized the codebase into independent `domain` models, `application` use cases (`video.process.ts`), and `infrastructure` implementations.
* chore(ci): add test scripts and enhance CI workflow - Add scripts to download test video and run ffmpeg tests - Refactor CI workflow for better Docker versioning, labeling, and image push logic - Integrate new scripts into CI for improved test automation * fix(ci): update script paths for downloading test assets and running tests * fix(ci): make scripts in .github/scripts executable
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces a complete initial setup for a Node.js-based FFmpeg video processing worker, including its Docker build, continuous integration, environment configuration, dependencies, and database schema. The changes span infrastructure, build automation, code formatting, and database design to enable a robust, production-ready video processing service.
The most important changes are:
Infrastructure & Build System:
Dockerfilethat builds a custom FFmpeg binary (with VMAF and other codecs), compiles the Node.js application, and sets up a secure, minimal runtime environment. This enables efficient, reproducible deployments and ensures all necessary media libraries are included..github/workflows/ci.yml) for CI/CD, covering build, test, Docker image versioning, and publishing to GHCR, along with automated test asset download and test execution scripts. [1] [2] [3]Configuration & Environment:
.env.examplewith detailed environment variables for both production and development, including database, Redis, Azure Blob Storage, and pipeline settings, to guide secure and flexible deployments..dockerignoreto exclude development, test, and sensitive files from Docker builds, reducing image size and improving security.Dependencies & Formatting:
package.jsonspecifying all runtime and development dependencies (e.g., Fastify, BullMQ, Azure SDKs, TypeScript, Prettier), scripts for build/test, and enforced Node.js 24+..prettierrcto enforce consistent code formatting and apnpm-workspace.yamlto ignore certain built dependencies, improving developer experience. [1] [2]Database Schema:
sql/main.sqlwith schema forvideos,video_metadata, andvideo_renditionstables, including constraints, indexes, and triggers for tracking video processing jobs and their metadata.