I can only comment to the ffmpeg / CPU usage problem (as I am being not a iOS developer):
The 100% CPU usage is something which is considered as normal. Possible ways to reduce it:
- using a lower preset (ultrafast or fast for example). It still quite likely produce a 100% load, but for shorter time. At the same time, the produced video file will be larger considering its file size.
- an another solution is to use a GTX 1080 Ti card for example (which have 2 encoder chips), so that it is able to offload the CPU. Cheaper cards have only one encoder chip as far as I know. So shortly, the GTX 1080 Ti can handle 2 encoding threads at the same time.