Back to Templates
Automated video processing system that monitors S3 for new uploads, generates thumbnails and preview clips, extracts metadata, transcodes to multiple formats, and distributes to CDN with webhook notifications.
A comprehensive video processing workflow that receives S3 events or manual triggers, validates video files, extracts metadata via FFprobe, generates thumbnails at key frames, creates animated GIF previews, transcodes to multiple resolutions, invalidates CDN cache, and sends completion notifications.
[S3 Event Webhook] [Manual Webhook]
| |
+--------+----------+
|
v
[Merge Triggers]
|
v
[Extract S3 Info] (Code)
|
v
[Check Is Video] (If)
/ \
Yes No
| |
v v
[Get Video Metadata] [Invalid Response]
(FFprobe) |
| |
v |
[Parse Video Metadata] |
(Code) |
/|\ |
/ | \ |
v v v |
[Thumbs][GIF][Transcode] |
\ | / |
\ | / |
v v |
[Aggregate Results] |
| |
v |
[Invalidate CDN Cache] |
| |
v |
[Generate Signed URLs] |
/ \ |
/ \ |
v v |
[Log Sheet] [Slack] |
\ / |
\ / |
v |
[Merge Output Paths] |
| |
+---------+-------+
|
v
[Merge All Paths]
|
v
[Respond to Webhook]
#video-processing for notifications| Extension | MIME Type |
|---|---|
| .mp4 | video/mp4 |
| .mov | video/quicktime |
| .avi | video/x-msvideo |
| .mkv | video/x-matroska |
| .webm | video/webm |
| .m4v | video/x-m4v |
| Size | Dimensions | Suffix |
|---|---|---|
| Large | 1280x720 | _large |
| Medium | 640x360 | _medium |
| Small | 320x180 | _small |
Thumbnails generated at: 10%, 30%, 50%, 70%, 90% of video duration
| Preset | Resolution | Bitrate | Codec |
|---|---|---|---|
| 1080p | 1920x1080 | 5000k | H.264 |
| 720p | 1280x720 | 2500k | H.264 |
| 480p | 854x480 | 1000k | H.264 |
{
"job_id": "job_1705312000_abc123",
"status": "completed",
"original": {
"filename": "video.mp4",
"resolution": "1920x1080",
"duration": "00:05:30"
},
"thumbnails": {
"large": "https://cdn/thumbnails/job_id/thumb_0_large.jpg",
"medium": "https://cdn/thumbnails/job_id/thumb_0_medium.jpg",
"small": "https://cdn/thumbnails/job_id/thumb_0_small.jpg"
},
"preview_gif": "https://cdn/previews/job_id/preview.gif",
"transcoded": {
"1080p": "https://cdn/transcoded/job_id/video_1080p.mp4",
"720p": "https://cdn/transcoded/job_id/video_720p.mp4",
"480p": "https://cdn/transcoded/job_id/video_480p.mp4"
}
}