A user picks a video from Photos. The app turns that video into a file the server can accept. Then it uploads the file.

On the surface, this sounds like a simple upload flow.

In practice, iOS makes you answer a much more specific question:

How do you reliably turn a video from the user's Photo Library into an uploadable MP4 file?

At first, I used AVAssetExportPresetPassthrough. It looked like the right default. It preserves the original media as much as possible, avoids unnecessary re-encoding, and is fast when it works. No quality loss, less CPU usage, less battery cost.