Я бы лично пошел по маршруту AVPlayer. Я знаю, что вы, вероятно, хотите использовать MPMoviePlayerViewController и AVAudioPlayer, но если вы просто потратите немного больше времени на AVMutableComposition с AVPlayer, вы можете сделать все, что вы пытаетесь, и даже больше. Это хорошо стоит инвестиций.
Короче говоря, вы настроите AVMutableComposition (который также считается «активом») с треками. Эти треки соответствуют аудио и видео трекам. Дорожки могут быть извлечены из всех или частей других файлов, или вы также можете вставлять пустые части аудио / видео дорожек по своему усмотрению. Вы поместите видео на видеодорожки и любое количество аудиофайлов на отдельные аудиодорожки. Затем вы создаете объект AVPlayer с помощью AVMutableComposition и вызываете сообщение «play». Он выполняет всю синхронизацию для вас очень точно.
Этот пост на самом деле имеет хороший пример кода, но я не уверен, что он все еще работает правильно.