Export full 240fps slo-mo videos from your iPhone

I needed to export full 240FPS “slo-mo” video from my iPhone recently. Specifically, I wanted to analyze the videos frame-by-frame to time things. It was suprisingly complicated, and the recommended steps on Stack Exchange require exporting to iMovie.

There is a simpler way (which I’ve since shared there).

Slo-Mo mode in iOS Camera

But how do I get the full slow-motion video?

First, remove the default easing

As far as I know, slo-mo iPhone videos are simply 240FPS videos. iOS applies an “easing” effect to the playback by default: it slows down playback in the middle, leaving the beginning and end at normal speed. If you remove this easing, you get an ordinary 240FPS video file, which you can step through frame-by-frame or play at whatever framerate you want. This is documented on support.apple.com.

You can remove this easing on your iPhone to get the regular 240FPS video:

  1. In the Photos app on your phone, open the video and tap the Adjust button with the sliders:

    Adjust button for video

    Tap the adjust button
  2. You’ll notice the easing on the default timeline:

    Easing in the default timeline

    Higher framerates at the edges

    You can drag the edges of this easing to adjust when it begins and ends, but you can also remove it one step. Tap the speedometer icon in the top-right corner, then tap 100% - 240FPS:

    Adjust button for video

    Change the Playback Speed to 100% - 240FPS

    The framerates on the timeline will disappear:

    Timeline after modification

    No easing in the new timeline

Awesome! You have a standard 240FPS video. You still need to export it, though.

Second, export it

To actually use the video, you need the file. I find that this can be finicky. The video in Photos on macOS will also be 240FPS, but:

The 2 methods I found retain 240FPS:

Strange! You can verify you have the correct framerate by opening the inspector in Quicktime (Window > Show Movie Inspector) and expanding the Video details section:

Timeline after modification

Encoded FPS is 239.02, yay!

If you see a number like 238.38 or 239.02, all is well. I suspect that is due to slightly variable framerate in the recording.

Done! You have a ~240FPS video file!



Appendix: counting frames in Quicktime Player

I did all this to estimate keyboard latency by counting frames. This is easier if you have the Quicktime Player show frame count instead of time (View > Time Display > Frame Count):

Changing the setting in the menu

Changing the player to show Frame Count

Then your timeline will show frame numbers instead of elapsed time:

Changing the setting in the menu

Timeline shows frame numbers now

Since the Encoded FPS is not-quite-240, I simply use that Encoded FPS number when estimating duration:

1000
ms over s
×
s over 239.02 frame
4.2 ms/​frame

I suspect there is a more accurate way of calculating frame duration, but I also suspect that this estimate is good enough :)