🎬 Execute ffmpeg command

Executes raw FFmpeg commands for advanced video/audio processing. Returns a Cloudinary URL of the processed file. CONSTRAINTS: - Command starts with 'ffmpeg' - No chaining (&&, ||, $(), >, eval, exec) - No system access (rm, wget, curl, /etc/, /bin/) - Max: 2048px width, 200M bitrate, 1200s duration - Output: .mp4 (video), .png/.jpg (image), .mp3 (audio) SPEED OPTIMIZATION: For faster encoding, add: -preset veryfast -tune zerolatency - Yields 3-10x speedup over defaults - Trade-off: slightly larger file size, minimal quality loss WHEN TO USE: Use only when template functions cannot achieve the effect: - stitch_videos → video concatenation - trim_video → cutting video segments - add_subtitles_to_video → captions - create_video_from_assets → combining images/videos VIDEO CONCATENATION: If you must concatenate manually instead of using stitch_videos: 1. Don't assume all inputs have audio. Use a=0 in concat, then handle audio separately: - For passthrough (no manipulation): -map 1:a? makes audio optional - For manipulation (apad, etc): [1:a]apad[outa] - but fails if no audio exists - If unsure whether source has audio, use -map 1:a? without filter_complex audio processing 2. Always normalize resolution, fps, pixel format, AND SAR before concat: [0:v]scale=1280:720:force_original_aspect_ratio=increase,crop=1280:720,fps=30,format=yuv420p,setsar=1[v0]; [1:v]scale=1280:720:force_original_aspect_ratio=increase,crop=1280:720,fps=30,format=yuv420p,setsar=1[v1]; [v0][v1]concat=n=2:v=1:a=0:unsafe=1[outv] 3. Never change aspect ratio. Use crop to fill frame, not pad/stretch. SAFE CROPPING: Crop formulas can fail if assumptions about input orientation are wrong. BAD - Assumes landscape, fails on portrait (width becomes larger than source): crop=in_h*9/16:in_h → Error: "Invalid too big or non positive size" GOOD - Use min() to clamp dimensions safely: crop=min(in_w,in_h*9/16):min(in_h,in_w*16/9) For 9:16 vertical crop (works on any input): crop=min(in_w,in_h*9/16):min(in_h,in_w*16/9):(in_w-min(in_w,in_h*9/16))/2:(in_h-min(in_h,in_w*16/9))/2 For 16:9 horizontal crop (works on any input): crop=min(in_w,in_h*16/9):min(in_h,in_w*9/16):(in_w-min(in_w,in_h*16/9))/2:(in_h-min(in_h,in_w*9/16))/2 EXAMPLES: Fast color correction + resize: ffmpeg -i input.mp4 -vf "eq=brightness=0.1:saturation=1.2,scale=1280:720" -preset veryfast output.mp4 Extract audio: ffmpeg -i video.mp4 -vn -acodec libmp3lame -ab 192k audio.mp3 Fade effect: ffmpeg -i input.mp4 -vf "fade=t=in:st=0:d=2,fade=t=out:st=8:d=2" output.mp4 Last frame extraction: ffmpeg -sseof -3 -i "https://..." -vsync 0 -update 1 output.png Fast multi-video concat with crop: ffmpeg -i v1.mp4 -i v2.mp4 -filter_complex "[0:v]scale=1280:720:force_original_aspect_ratio=increase,crop=1280:720,fps=30,format=yuv420p,setsar=1[a];[1:v]scale=1280:720:force_original_aspect_ratio=increase,crop=1280:720,fps=30,format=yuv420p,setsar=1[b];[a][b]concat=n=2:v=1:a=0:unsafe=1[v]" -map "[v]" -preset veryfast output.mp4
Public
17.7k
🎬 Execute ffmpeg command - AI workflow | Glif