### Copy .env.example to .env Source: https://github.com/htekdev/vidpipe/blob/main/docs/configuration.md Copy the example environment file to start configuring your project. ```bash cp .env.example .env ``` -------------------------------- ### Install Vidpipe from Source Source: https://github.com/htekdev/vidpipe/blob/main/docs/getting-started.md Install vidpipe from its source repository. This involves cloning the repo, installing dependencies, building the project, and then starting it. ```bash git clone https://github.com/htekdev/vidpipe.git cd vidpipe npm install npm run build npm start ``` -------------------------------- ### Install and Run VidPipe Source: https://github.com/htekdev/vidpipe/blob/main/site/index.md Install VidPipe globally using npm and run it on a video file to automatically generate edited content, clips, captions, social posts, and a blog draft. This is the quickest way to get started. ```bash npm install -g vidpipe vidpipe /path/to/video.mp4 ``` -------------------------------- ### Example MediaItem Usage Source: https://github.com/htekdev/vidpipe/blob/main/docs/late-api-reference.md An example of how to structure the mediaItems array when creating a post. ```json { "mediaItems": [ { "type": "video", "url": "https://media.getlate.dev/temp/123_abc_video.mp4" } ] } ``` -------------------------------- ### Initialize vidpipe Setup Source: https://github.com/htekdev/vidpipe/blob/main/docs/social-publishing.md Run the interactive setup wizard for a quick and recommended configuration. This process verifies FFmpeg, sets up API keys, connects social accounts, and creates the schedule.json file. ```bash vidpipe init ``` -------------------------------- ### Platform-Specific Settings Example Source: https://github.com/htekdev/vidpipe/blob/main/docs/late-api-reference.md An example of how to include platform-specific data, such as title and visibility for YouTube, within the platforms array. ```json { "platforms": [{ "platform": "youtube", "accountId": "acc_123", "platformSpecificData": { "title": "My Video Title", "visibility": "public" } }] } ``` -------------------------------- ### Minimal VidPipe SDK Example Source: https://github.com/htekdev/vidpipe/blob/main/docs/sdk.md A basic example demonstrating SDK initialization, running diagnostics, and processing a video. Ensure your OPENAI_API_KEY is set in the environment. ```typescript import { createVidPipe } from 'vidpipe' const vidpipe = createVidPipe({ openaiApiKey: process.env.OPENAI_API_KEY, }) const diagnostics = await vidpipe.doctor() if (!diagnostics.allPassed) { console.warn(diagnostics.checks) } const result = await vidpipe.processVideo('./videos/demo.mp4') console.log(result.video.videoDir) console.log(result.shorts.length) console.log(result.socialPosts.length) ``` -------------------------------- ### Set Custom FFmpeg Paths for Windows Manual Install Source: https://github.com/htekdev/vidpipe/blob/main/docs/ffmpeg-setup.md Configure FFmpeg and ffprobe binary locations for a manual installation on Windows by setting FFMPEG_PATH and FFPROBE_PATH in a .env file. Ensure the paths point to the 'bin' directory of your FFmpeg installation. ```env FFMPEG_PATH=C:\tools\ffmpeg\bin\ffmpeg.exe FFPROBE_PATH=C:\tools\ffmpeg\bin\ffprobe.exe ``` -------------------------------- ### Example schedule.json Configuration Snippet Source: https://github.com/htekdev/vidpipe/blob/main/docs/social-publishing.md A minimal example of the schedule.json structure, showing timezone and platform-specific posting slots and days to avoid. ```json { "timezone": "America/Chicago", "platforms": { "linkedin": { "slots": [ { "days": ["tue", "wed"], "time": "08:00", "label": "Morning thought leadership" }, { "days": ["tue", "wed", "thu"], "time": "12:00", "label": "Lunch break engagement" } ], "avoidDays": ["sat", "sun"] } } } ``` -------------------------------- ### Example .env File Source: https://github.com/htekdev/vidpipe/blob/main/site/guide/configuration.md Set environment variables for API keys, folder paths, and optional FFmpeg/Exa AI configurations. ```env OPENAI_API_KEY=sk-your-api-key-here WATCH_FOLDER=/home/you/Videos/Recordings OUTPUT_DIR=/home/you/Content/processed # Optional: explicit FFmpeg paths # FFMPEG_PATH=/usr/local/bin/ffmpeg # FFPROBE_PATH=/usr/local/bin/ffprobe # Optional: Exa AI for web search links in social posts # EXA_API_KEY=your-exa-api-key-here ``` -------------------------------- ### Install FFmpeg via winget (Windows) Source: https://github.com/htekdev/vidpipe/blob/main/docs/ffmpeg-setup.md Recommended method for Windows users to install FFmpeg using the Windows Package Manager. Restart your terminal after installation. ```powershell winget install Gyan.FFmpeg ``` -------------------------------- ### VidPipe Configuration Example Source: https://github.com/htekdev/vidpipe/blob/main/README.md Example of a .env file for configuring VidPipe. Set environment variables to customize paths, API keys, and other settings. ```env # .env OPENAI_API_KEY=sk-your-key-here WATCH_FOLDER=/path/to/recordings OUTPUT_DIR=/path/to/output # EXA_API_KEY=your-exa-key # Optional: enables web search in social/blog posts # BRAND_PATH=./brand.json # Optional: path to brand voice config # FFMPEG_PATH=/usr/local/bin/ffmpeg # FFPROBE_PATH=/usr/local/bin/ffprobe # LATE_API_KEY=sk_your_key_here # Optional: Late API for social publishing # GITHUB_TOKEN=ghp_... # Optional: GitHub token for ID8 idea storage ``` -------------------------------- ### FFmpeg Overlay Filter Example Source: https://github.com/htekdev/vidpipe/blob/main/docs/research-aspect-ratios.md Provides an example of the FFmpeg 'overlay' filter for compositing one video stream onto another. ```bash overlay=main_w-overlay_w:main_h-overlay_h ``` -------------------------------- ### Install FFmpeg on Fedora Source: https://github.com/htekdev/vidpipe/blob/main/docs/ffmpeg-setup.md Install FFmpeg on Fedora Linux using the dnf package manager. ```bash sudo dnf install ffmpeg ``` -------------------------------- ### Install FFmpeg on Arch Linux Source: https://github.com/htekdev/vidpipe/blob/main/docs/ffmpeg-setup.md Install FFmpeg on Arch Linux using the pacman package manager. ```bash sudo pacman -S ffmpeg ``` -------------------------------- ### Full Vidpipe Command Example Source: https://github.com/htekdev/vidpipe/blob/main/README.md An example of a comprehensive vidpipe command with multiple options, including watch directory, output directory, API key, brand configuration, and verbose logging. ```bash vidpipe \ --watch-dir ~/Videos/Recordings \ --output-dir ~/Content/processed \ --openai-key sk-... \ --brand ./brand.json \ --verbose ``` -------------------------------- ### Check FFmpeg Installation Source: https://github.com/htekdev/vidpipe/blob/main/docs/ffmpeg-setup.md Verify that FFmpeg and ffprobe are installed and accessible on your system. Ensure the version is 6.0 or higher. ```bash ffmpeg -version ffprobe -version ``` -------------------------------- ### Scheduler Configuration Example Source: https://github.com/htekdev/vidpipe/blob/main/docs/scheduling-debug.md Shows the structure of the schedule.json configuration file, including timezone and platform-specific slot definitions. ```json { "timezone": "America/Chicago", "platforms": { "tiktok": { "slots": [ { "days": ["tue", "wed", "thu"], "time": "19:00", "label": "Prime entertainment hours" }, { "days": ["fri", "sat"], "time": "21:00", "label": "Weekend evening" } ], "avoidDays": [] } } } ``` -------------------------------- ### Debug Log Example Output Source: https://github.com/htekdev/vidpipe/blob/main/docs/scheduling-debug.md Example of a debug log message indicating a found available slot for a platform, including the scheduled datetime. ```text [DEBUG] Found available slot for tiktok: 2026-02-10T19:00:00-06:00 ``` -------------------------------- ### Constructor-Only Configuration Example Source: https://github.com/htekdev/vidpipe/blob/main/docs/sdk.md Configure VidPipe solely through options passed to the `createVidPipe` constructor. This is suitable for self-contained applications. ```typescript import { createVidPipe } from 'vidpipe' const vidpipe = createVidPipe({ openaiApiKey: process.env.OPENAI_API_KEY, exaApiKey: process.env.EXA_API_KEY, youtubeApiKey: process.env.YOUTUBE_API_KEY, llmProvider: 'copilot', outputDir: './recordings', brandPath: './brand.json', }) ``` -------------------------------- ### Preact Setup and Platform Configuration Source: https://github.com/htekdev/vidpipe/blob/main/src/L7-app/review/public/index.html Initializes Preact, htm for JSX-like syntax, and defines platform-specific configurations. ```javascript import { h, render } from 'https://esm.sh/preact@10' import { useState, useEffect, useCallback, useRef } from 'https://esm.sh/preact@10/hooks' import htm from 'https://esm.sh/htm@3' const html = htm.bind(h) // ── Platform config ── const PLATFORMS = { tiktok: { icon: '🎵', color: '#00f2ea', name: 'TikTok' }, youtube: { icon: '▶️', color: '#ff0000', name: 'YouTube' }, instagram: { icon: '📸', color: '#e1306c', name: 'Instagram' }, linkedin: { icon: '💼', color: '#0077b5', name: 'LinkedIn' }, twitter: { icon: '🐦', color: '#1da1f2', name: 'X/Twitter' }, } ``` -------------------------------- ### Mock Simplification Example: With Layers Source: https://github.com/htekdev/vidpipe/blob/main/docs/architecture/layers.md Demonstrates how the layered architecture reduces the number of necessary mocks. By adhering to layer boundaries, only direct dependencies (L2 clients in this L3 service example) need to be mocked. ```typescript vi.mock('../../L2-clients/whisper/whisperClient.js') vi.mock('../../L2-clients/ffmpeg/audioExtraction.js') ``` -------------------------------- ### Basic .env Configuration Source: https://github.com/htekdev/vidpipe/blob/main/site/guide/configuration.md For most users, a simple `.env` file with the OpenAI API key is sufficient. Other settings default to sensible values. Use `vidpipe init` for interactive setup. ```env OPENAI_API_KEY=sk-your-key-here ``` -------------------------------- ### Verify vidpipe Setup Source: https://github.com/htekdev/vidpipe/blob/main/docs/social-publishing.md Run the doctor command to check if your vidpipe installation and configuration are set up correctly. ```bash vidpipe doctor ``` -------------------------------- ### Full Vidpipe Configuration Example Source: https://github.com/htekdev/vidpipe/blob/main/docs/getting-started.md Run vidpipe with a comprehensive set of options, including watch directory, output directory, API keys, branding, and verbose logging. ```bash vidpipe \ --watch-dir ~/Videos/Recordings \ --output-dir ~/Content/processed \ --openai-key sk-... \ --exa-key exa-... \ --brand ./my-brand.json \ --verbose ``` -------------------------------- ### ASS Subtitle Formatting Example Source: https://github.com/htekdev/vidpipe/blob/main/docs/research-captions.md Demonstrates how to format ASS dialogue lines to align with the start of the first word and the end of the last word, with comments indicating silence periods. ```ass ; Group 1: words from 0.24s to 1.58s (then silence until 2.10s) Dialogue: 0,0:00:00.24,0:00:01.58,Hormozi,,0,0,0,,In the tapestry of time ; Group 2: words from 2.10s to 4.97s Dialogue: 0,0:00:02.10,0:00:04.97,Hormozi,,0,0,0,,a visitor from shadows past ; (screen is blank from 1.58s to 2.10s) ``` -------------------------------- ### Example .env file configuration Source: https://github.com/htekdev/vidpipe/blob/main/docs/configuration.md A sample .env file showing how to set environment variables for vidpipe, including API keys and directory paths. Uncomment lines to configure FFmpeg paths explicitly. ```env OPENAI_API_KEY=sk-your-api-key-here WATCH_FOLDER=/home/you/Videos/Recordings OUTPUT_DIR=/home/you/Content/processed # Optional: explicit FFmpeg paths # FFMPEG_PATH=/usr/local/bin/ffmpeg ``` -------------------------------- ### Install FFmpeg via Homebrew (macOS) Source: https://github.com/htekdev/vidpipe/blob/main/docs/ffmpeg-setup.md Install FFmpeg on macOS using the Homebrew package manager. This command installs both ffmpeg and ffprobe and adds them to your system's PATH. ```bash brew install ffmpeg ``` -------------------------------- ### Complete Post Example (Multi-Platform with Media) Source: https://github.com/htekdev/vidpipe/blob/main/docs/late-api-reference.md This JSON structure demonstrates how to create a post with content and media items, targeting multiple social media platforms with platform-specific configurations. It includes scheduling information. ```json { "content": "Excited to announce our new product! 🎉", "mediaItems": [ { "url": "https://media.getlate.dev/temp/123_product.mp4", "type": "video" } ], "platforms": [ { "platform": "youtube", "accountId": "yt_123", "platformSpecificData": { "title": "New Product Announcement", "visibility": "public", "categoryId": "28", "firstComment": "Thanks for watching! 🔔" } }, { "platform": "tiktok", "accountId": "tt_456", "platformSpecificData": { "tiktokSettings": { "privacy_level": "PUBLIC_TO_EVERYONE", "allow_comment": true, "allow_duet": true, "allow_stitch": true, "content_preview_confirmed": true, "express_consent_given": true } } }, { "platform": "instagram", "accountId": "ig_789", "platformSpecificData": { "firstComment": "Link in bio! 🔗" } }, { "platform": "linkedin", "accountId": "li_012", "platformSpecificData": { "firstComment": "What do you think? 👇" } }, { "platform": "twitter", "accountId": "tw_345" } ], "scheduledFor": "2024-11-01T10:00:00Z", "timezone": "America/New_York" } ``` -------------------------------- ### Install FFmpeg via MacPorts (macOS) Source: https://github.com/htekdev/vidpipe/blob/main/docs/ffmpeg-setup.md Install FFmpeg on macOS using the MacPorts package manager. ```bash sudo port install ffmpeg ``` -------------------------------- ### Example Queue Structure Source: https://github.com/htekdev/vidpipe/blob/main/site/guide/social-publishing.md Illustrates the directory structure for posts in the publishing queue, including video, metadata, and content files. ```tree publish-queue/ ├── my-tip-tiktok/ │ ├── media.mp4 # Platform-optimized video │ ├── metadata.json # Scheduling and platform data │ └── post.md # Post text content ``` -------------------------------- ### Install FFmpeg on Ubuntu/Debian Source: https://github.com/htekdev/vidpipe/blob/main/docs/ffmpeg-setup.md Install FFmpeg on Ubuntu or Debian-based Linux distributions using the apt package manager. ```bash sudo apt update sudo apt install ffmpeg ``` -------------------------------- ### SDK Method: startInterview Source: https://github.com/htekdev/vidpipe/blob/main/specs/L7-app/commands/ideateStart.md Initiates an interview session programmatically via the SDK. It takes an idea number and options, and provides real-time event callbacks. ```APIDOC ## startInterview(ideaNumber, options) ### Description Starts an interactive interview session for a given idea number using the SDK. It allows for real-time event observation and input handling. ### Parameters #### Parameters - **ideaNumber** (string) - Required - The GitHub Issue number of the idea to start an interview for. - **options** (object) - Optional - Configuration options for the interview session. - **mode** (string) - Optional - The mode of the interview. Defaults to `interview`. - **progress** (boolean) - Optional - If true, enables structured JSONL interview events to stderr. - **onEvent** (function) - Optional - Callback function to receive real-time interview events. - **answerProvider** (function) - Optional - Callback function called when the agent requires user input. ``` -------------------------------- ### Install FFmpeg via Chocolatey (Windows) Source: https://github.com/htekdev/vidpipe/blob/main/docs/ffmpeg-setup.md Alternative installation method for Windows using the Chocolatey package manager. ```powershell choco install ffmpeg ``` -------------------------------- ### Environment-Driven Configuration Example Source: https://github.com/htekdev/vidpipe/blob/main/docs/sdk.md Configure VidPipe using environment variables. The SDK is initialized without arguments, relying on the environment for settings. ```bash OPENAI_API_KEY=sk-... EXA_API_KEY=exa_... YOUTUBE_API_KEY=AIza... OUTPUT_DIR=./recordings BRAND_PATH=./brand.json LLM_PROVIDER=copilot ``` ```typescript import { createVidPipe } from 'vidpipe' const vidpipe = createVidPipe() ``` -------------------------------- ### Install Vidpipe Globally Source: https://github.com/htekdev/vidpipe/blob/main/docs/getting-started.md Install the vidpipe CLI globally using npm. This makes the `vidpipe` command available system-wide. ```bash npm install -g vidpipe ``` -------------------------------- ### Install Dependencies for ONNX Runtime and Image Processing Source: https://github.com/htekdev/vidpipe/blob/main/docs/screen-object-detection.md Install the necessary npm packages for running ONNX models and processing images. ```bash npm install onnxruntime-node sharp ``` -------------------------------- ### FFmpeg CropDetect Filter Example Source: https://github.com/htekdev/vidpipe/blob/main/docs/research-aspect-ratios.md Example of using FFmpeg's 'cropdetect' filter to automatically detect black borders in a video. ```bash cropdetect=24:16:0 ``` -------------------------------- ### CLI Command: ideate start Source: https://github.com/htekdev/vidpipe/blob/main/specs/L7-app/commands/ideateStart.md Initiates an interactive interview session to develop a content idea. Accepts a GitHub Issue number as a required argument and supports an optional --mode flag. ```APIDOC ## ideate start ### Description Prepares a content idea for recording by running an interactive interview session in the terminal. Supports Socratic questioning to help develop the idea through iterative Q&A. ### Method CLI Command ### Parameters #### Path Parameters - **issue-number** (string) - Required - The GitHub Issue number associated with the idea. #### Options - **--mode** (string) - Optional - Selects the session mode. Defaults to `interview`. - **--progress** (boolean) - Optional - Enables structured JSONL interview events to stderr. ``` -------------------------------- ### CI/CD or Automation Configuration Source: https://github.com/htekdev/vidpipe/blob/main/docs/configuration.md Ideal for automated workflows, this setup processes a single video, outputs to a temporary directory, and requires an OpenAI API key to be set as an environment variable. The --once flag ensures it runs and exits. ```bash OPENAI_API_KEY=sk-... vidpipe \ --once \ --output-dir /tmp/output \ /path/to/video.mp4 ``` -------------------------------- ### Install VidPipe as a Library (SDK) Source: https://context7.com/htekdev/vidpipe/llms.txt Install the vidpipe package as a dependency for programmatic use in your Node.js project. Ensure your project uses ESM. ```bash npm install vidpipe ``` -------------------------------- ### Transcription and summary only Source: https://github.com/htekdev/vidpipe/blob/main/docs/configuration.md This example demonstrates how to process a video for transcription and summary only, by skipping all optional pipeline stages using CLI flags. ```bash vidpipe \ --no-silence-removal \ --no-shorts \ --no-social \ --no-captions \ /path/to/video.mp4 ``` -------------------------------- ### Install Gemini Node.js SDK Source: https://github.com/htekdev/vidpipe/blob/main/docs/gemini-video-understanding.md Install the Google GenAI SDK for Node.js using npm. This is a prerequisite for using the Gemini API in your project. ```bash npm install @google/genai ``` -------------------------------- ### Example Multi-Line Layout Source: https://github.com/htekdev/vidpipe/blob/main/docs/research-captions.md An example of how multi-line captions are laid out on a vertical screen. Both lines appear simultaneously, with only the currently spoken word highlighted. ```plaintext Example multi-line layout (vertical 1080×1920): Line 1: "In the tapestry" (centered at y=1400) Line 2: "of time" (centered at y=1480) ``` -------------------------------- ### Initialize and Process Video with Vidpipe SDK Source: https://github.com/htekdev/vidpipe/blob/main/README.md Import and initialize the Vidpipe SDK, then use it to process a video file. Ensure your OpenAI API key is set as an environment variable. The output directory for recordings can be specified during initialization. ```typescript import { createVidPipe } from 'vidpipe' const vidpipe = createVidPipe({ openaiApiKey: process.env.OPENAI_API_KEY, outputDir: './recordings', }) const result = await vidpipe.processVideo('./videos/demo.mp4', { skipGit: true, }) console.log(result.video.videoDir) console.log(result.shorts.length) ``` -------------------------------- ### System Prompt Guidance: Layouts Source: https://github.com/htekdev/vidpipe/blob/main/docs/research/producer-agent.md Provides guidance for the ProducerAgent's system prompt regarding layout selection, including defaults and specific use cases. ```markdown ### Layout Guidance - Start with `split_layout` as default - `only_webcam` for personal moments (intros, reactions, emotional beats) - `only_screen` for detailed technical content (code walkthroughs, demos) - `zoom_screen` always requires prior `capture_frame` + region specification ``` -------------------------------- ### Recommended Pipeline for Smart Cropping Source: https://github.com/htekdev/vidpipe/blob/main/docs/research-aspect-ratios.md This pseudocode outlines the recommended steps for a smart cropping pipeline, including webcam detection, region extraction, and stacking. ```pseudocode 1. Detect webcam overlay region (OpenCV face detection in corners) 2. If webcam detected: a. Extract webcam region → scale for bottom panel b. Remove webcam region from screen content c. Smart-crop screen content for top panel d. Stack vertically (vstack) 3. If no webcam: a. Center-crop the most active region b. Scale to 9:16 4. Apply captions overlay (for accessibility + engagement) ``` -------------------------------- ### Example JSONL Progress Events Source: https://github.com/htekdev/vidpipe/blob/main/README.md These are examples of the self-contained JSON objects emitted as progress events. Each line represents a distinct event in the pipeline. ```jsonl {"event":"pipeline:start","videoPath":"video.mp4","totalStages":16,"timestamp":"..."} {"event":"stage:start","stage":"ingestion","stageNumber":1,"totalStages":16,"name":"Ingestion","timestamp":"..."} {"event":"stage:complete","stage":"ingestion","stageNumber":1,"totalStages":16,"name":"Ingestion","duration":423,"success":true,"timestamp":"..."} {"event":"stage:skip","stage":"shorts","stageNumber":7,"totalStages":16,"name":"Shorts","reason":"SKIP_SHORTS","timestamp":"..."} {"event":"pipeline:complete","totalDuration":45000,"stagesCompleted":14,"stagesFailed":0,"stagesSkipped":2,"timestamp":"..."} ``` -------------------------------- ### Configure Environment Variables Source: https://github.com/htekdev/vidpipe/blob/main/README.md Copy the example environment file and edit it to add your required API keys. The OpenAI API key is mandatory for transcription and AI features. ```bash # Unix/Mac cp .env.example .env # Windows (PowerShell) Copy-Item .env.example .env # Then edit .env and add your OpenAI API key (REQUIRED): # OPENAI_API_KEY=sk-your-key-here ``` -------------------------------- ### Hoisted Mock Setup with vi.hoisted() Source: https://github.com/htekdev/vidpipe/blob/main/audit/mockability/README.md The `vi.hoisted()` pattern is consistently used across test files for ESM-compatible mock setup, especially for complex dependencies. ```typescript vi.hoisted() ``` -------------------------------- ### Create Split-Screen Video (Screen + Webcam) Source: https://github.com/htekdev/vidpipe/blob/main/docs/research-aspect-ratios.md Combines screen content and webcam feed into a 9:16 portrait video. Screen content occupies the top 65% and webcam the bottom 35%. Requires FFmpeg with filter_complex support. ```bash ffmpeg -i input.mp4 -filter_complex " [0:v]crop=ih*16/9:ih:0:0,scale=1080:1248[screen]; [0:v]crop=480:270:iw-490:ih-280,scale=1080:672[webcam]; [screen][webcam]vstack=inputs=2[out]" -map "[out]" -map 0:a -c:v libx264 -preset medium -crf 23 -c:a aac output_split.mp4 ``` -------------------------------- ### Vidpipe Progress Event Examples Source: https://context7.com/htekdev/vidpipe/llms.txt Examples of structured JSONL events emitted to stderr for pipeline progress. These events include pipeline start/complete, stage start/complete/skip/error. ```jsonl {"event":"pipeline:start","videoPath":"video.mp4","totalStages":16,"timestamp":"2026-03-01T10:00:00Z"} ``` ```jsonl {"event":"stage:start","stage":"ingestion","stageNumber":1,"totalStages":16,"name":"Ingestion","timestamp":"..."} ``` ```jsonl {"event":"stage:complete","stage":"ingestion","stageNumber":1,"totalStages":16,"name":"Ingestion","duration":423,"success":true,"timestamp":"..."} ``` ```jsonl {"event":"stage:skip","stage":"shorts","stageNumber":6,"totalStages":16,"name":"Shorts","reason":"SKIP_SHORTS","timestamp":"..."} ``` ```jsonl {"event":"stage:error","stage":"blog","stageNumber":13,"totalStages":16,"name":"Blog","error":"Network timeout","timestamp":"..."} ``` ```jsonl {"event":"pipeline:complete","totalDuration":45231,"stagesCompleted":14,"stagesFailed":1,"stagesSkipped":1,"timestamp":"..."} ``` -------------------------------- ### FFmpeg Burn-In Command Examples Source: https://github.com/htekdev/vidpipe/blob/main/docs/research-captions.md Demonstrates FFmpeg commands for burning ASS captions into video. Includes basic usage, specifying a custom fonts directory, and high-quality encoding settings. ```bash # Basic burn-in ffmpeg -i input.mp4 -vf "ass=captions.ass" -c:a copy output.mp4 # With custom fonts directory ffmpeg -i input.mp4 -vf "ass=captions.ass:fontsdir=./fonts/" -c:a copy output.mp4 # High quality encoding ffmpeg -i input.mp4 \ -vf "ass=captions.ass:fontsdir=./fonts/" \ -c:v libx264 -preset slow -crf 18 \ -c:a copy \ output.mp4 ``` -------------------------------- ### Install FFmpeg in Alpine Linux (Docker) Source: https://github.com/htekdev/vidpipe/blob/main/docs/ffmpeg-setup.md Install FFmpeg within an Alpine Linux environment, typically used in Docker containers, using the apk package manager. ```dockerfile RUN apk add --no-cache ffmpeg ``` -------------------------------- ### Initialize VidPipe SDK Source: https://github.com/htekdev/vidpipe/blob/main/docs/sdk.md Create an instance of the VidPipe SDK. Configuration options can be passed to the constructor. ```typescript const vidpipe = createVidPipe(config?) ``` -------------------------------- ### Run Vidpipe Directly with npx Source: https://github.com/htekdev/vidpipe/blob/main/docs/getting-started.md Execute vidpipe directly using npx without a global installation. Useful for quick tests or when you don't want to install globally. ```bash npx vidpipe --once /path/to/video.mp4 ```