192 lines
5.2 KiB
Plaintext
192 lines
5.2 KiB
Plaintext
---
|
|
title: "Media processing workflows"
|
|
sidebarTitle: "Media processing"
|
|
description: "Learn how to use Trigger.dev for media processing including video transcoding, image optimization, audio transformation, and document conversion."
|
|
---
|
|
|
|
import UseCasesCards from "/snippets/use-cases-cards.mdx";
|
|
|
|
## Overview
|
|
|
|
Build media processing pipelines that handle large files and long-running operations. Process videos, images, audio, and documents with automatic retries, progress tracking, and no timeout limits.
|
|
|
|
## Featured examples
|
|
|
|
<CardGroup cols={3}>
|
|
<Card title="FFmpeg video processing" icon="book" href="/guides/examples/ffmpeg-video-processing">
|
|
Process videos and upload results to R2 storage using FFmpeg.
|
|
</Card>
|
|
<Card
|
|
title="Product image generator"
|
|
icon="book"
|
|
href="/guides/example-projects/product-image-generator"
|
|
>
|
|
Transform product photos into professional marketing images using Replicate.
|
|
</Card>
|
|
<Card
|
|
title="LibreOffice PDF conversion"
|
|
icon="book"
|
|
href="/guides/examples/libreoffice-pdf-conversion"
|
|
>
|
|
Convert documents to PDF using LibreOffice.
|
|
</Card>
|
|
</CardGroup>
|
|
|
|
## Benefits of using Trigger.dev for media processing workflows
|
|
|
|
**Process multi-hour videos without timeouts:** Transcode videos, extract frames, or run CPU-intensive operations for hours. No execution time limits.
|
|
|
|
**Stream progress to users in real-time:** Show processing status updating live in your UI. Users see exactly where encoding is and how long remains.
|
|
|
|
**Parallel processing with resource control:** Process hundreds of files simultaneously with configurable concurrency limits. Control resource usage without overwhelming infrastructure.
|
|
|
|
## Example workflow patterns
|
|
|
|
<Tabs>
|
|
<Tab title="Video transcode">
|
|
Simple video transcoding pipeline. Downloads video from storage, batch triggers parallel transcoding to multiple formats and thumbnail extraction, uploads all results.
|
|
|
|
<div align="center">
|
|
|
|
```mermaid
|
|
graph TB
|
|
A[processVideo] --> B[downloadFromStorage]
|
|
B --> C[batchTriggerAndWait]
|
|
|
|
C --> D[transcodeToHD]
|
|
C --> E[transcodeToSD]
|
|
C --> F[extractThumbnail]
|
|
|
|
D --> G[uploadToStorage]
|
|
E --> G
|
|
F --> G
|
|
```
|
|
|
|
</div>
|
|
</Tab>
|
|
|
|
<Tab title="Adaptive video processing">
|
|
**Router + Coordinator pattern**. Analyzes video metadata to determine source resolution, routes to appropriate transcoding preset, batch triggers parallel post-processing for thumbnails, preview clips, and chapter detection.
|
|
|
|
<div align="center">
|
|
|
|
```mermaid
|
|
graph TB
|
|
A[processVideoUpload] --> B[analyzeMetadata]
|
|
B --> C{Source<br/>Resolution?}
|
|
|
|
C -->|4K Source| D[transcode4K]
|
|
C -->|HD Source| E[transcodeHD]
|
|
C -->|SD Source| F[transcodeSD]
|
|
|
|
D --> G[coordinatePostProcessing]
|
|
E --> G
|
|
F --> G
|
|
|
|
G --> H[batchTriggerAndWait]
|
|
H --> I[extractThumbnails]
|
|
H --> J[generatePreview]
|
|
H --> K[detectChapters]
|
|
|
|
I --> L[uploadToStorage]
|
|
J --> L
|
|
K --> L
|
|
|
|
L --> M[notifyComplete]
|
|
```
|
|
|
|
</div>
|
|
</Tab>
|
|
|
|
<Tab title="Smart image optimization">
|
|
**Router + Coordinator pattern**. Analyzes image content to detect type, routes to specialized processing (background removal for products, face detection for portraits, scene analysis for landscapes), upscales with AI, batch triggers parallel variant generation.
|
|
|
|
<div align="center">
|
|
|
|
```mermaid
|
|
graph TB
|
|
A[processImageUpload] --> B[analyzeContent]
|
|
B --> C{Content<br/>Type?}
|
|
|
|
C -->|Product| D[removeBackground]
|
|
C -->|Portrait| E[detectFaces]
|
|
C -->|Landscape| F[analyzeScene]
|
|
|
|
D --> G[upscaleWithAI]
|
|
E --> G
|
|
F --> G
|
|
|
|
G --> H[batchTriggerAndWait]
|
|
H --> I[generateWebP]
|
|
H --> J[generateThumbnails]
|
|
H --> K[generateSocialCrops]
|
|
|
|
I --> L[uploadToStorage]
|
|
J --> L
|
|
K --> L
|
|
```
|
|
|
|
</div>
|
|
</Tab>
|
|
|
|
<Tab title="Podcast production">
|
|
**Coordinator pattern**. Pre-processes raw audio with noise reduction and speaker diarization, batch triggers parallel tasks for transcription (Deepgram), audio enhancement, and chapter detection, aggregates results to generate show notes and publish.
|
|
|
|
<div align="center">
|
|
|
|
```mermaid
|
|
graph TB
|
|
A[processAudioUpload] --> B[cleanAudio]
|
|
B --> C[coordinateProcessing]
|
|
|
|
C --> D[batchTriggerAndWait]
|
|
D --> E[transcribeWithDeepgram]
|
|
D --> F[enhanceAudio]
|
|
D --> G[detectChapters]
|
|
|
|
E --> H[generateShowNotes]
|
|
F --> H
|
|
G --> H
|
|
|
|
H --> I[publishToPlatforms]
|
|
```
|
|
|
|
</div>
|
|
</Tab>
|
|
|
|
<Tab title="Document extraction with approval">
|
|
**Router pattern with human-in-the-loop**. Detects file type and routes to appropriate processor, classifies document with AI to determine type (invoice/contract/receipt), extracts structured data fields, optionally pauses with wait.forToken for human approval.
|
|
|
|
<div align="center">
|
|
|
|
```mermaid
|
|
graph TB
|
|
A[processDocumentUpload] --> B[detectFileType]
|
|
|
|
B -->|PDF| C[extractText]
|
|
B -->|Word/Excel| D[convertToPDF]
|
|
B -->|Image| E[runOCR]
|
|
|
|
C --> F[classifyDocument]
|
|
D --> F
|
|
E --> F
|
|
|
|
F -->|Invoice| G[extractLineItems]
|
|
F -->|Contract| H[extractClauses]
|
|
F -->|Receipt| I[extractExpenses]
|
|
|
|
G --> J{Needs<br/>Review?}
|
|
H --> J
|
|
I --> J
|
|
|
|
J -->|Yes| K[wait.forToken approval]
|
|
J -->|No| L[processAndIntegrate]
|
|
K --> L
|
|
```
|
|
|
|
</div>
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
<UseCasesCards />
|