Where the layer approach runs out
Unlike a Worker isolate, Lambda will happily execute a native binary. The problem is not whether FFmpeg runs. It is the three quotas it runs into.
The static ffmpeg binary unpacks to 140 MB, and Lambda counts 250 MB unzipped across every layer. That is 56% of the budget for one file. Add ffprobe at 139.8 MB and you are over the cap with none of your own code deployed.
Then CPU. Lambda sells it through memory, at 1,769 MB per vCPU. We measured a real VP9 transcode holding 2.2 cores while touching only 387 MB of RAM. Renting those cores means provisioning about 3,892 MB, around 10.1 times the memory the work needs.
Then the clock. 15 minutes is a hard quota, so a long encode has to be split into chunks and reassembled, and that machinery is yours to build. An offloaded job gets 9 hours on Pro and 1 hour on Free, in one job with nothing to stitch.