Мне удалось создать файл * .mov с помощью AVAssetWriter.Я использовал снимки экрана и аудио CMSampleBuffer, которые я получил от использования AVCaptureSession, и передал его на входы AVAssetWriter, и это сработало.
Теперь я хотел бы объединить файл * .mov с музыкой из ipod / iphoneмузыкальная библиотека (скорее всего * .mp3).Поэтому моя первоначальная идея - использовать AVAssetReader для получения образцов из файла * .mp3 и * .mov и передачи образцов в AVAssetWriter.Будет ли это работать?Просто прочитав документацию, я думаю, что это возможно.
Я немного поиграл с этой идеей, но не могу заставить ее работать.
Моя первая попытка - использовать 2 AVAssetReaders, один длякаждый файл.Я использовал AVAssetReaderAudioMixOutput в качестве выхода для 1-го считывателя и затем AVAssetReaderVideoCompositionOutput для 2-го.Проблема в том, что использование AVAssetReaderVideoCompositionOutput требует, чтобы вы передали ему AVVideoComposition.У меня были проблемы с созданием AVVideoComposition / AVMutableVideoComposition, поэтому я отказался от этого решения.Я не понимаю, почему мне нужно передать AVVideoComposition, я просто хочу получить образцы фильма.
Так что моя вторая попытка похожа, но вместо того, чтобы использовать AVAssetReaderVideoCompositionOutput в качестве вывода для второго считывателя, я использовал 2 AVAssetReaderTrackOutputвместо.Итак, теперь у меня есть 2 считывателя с 3 выходами, и я попытался использовать пример из выходов и передать его AVAssetWriter для создания файла * .mov.Я смог запустить его, без ошибок / сбоев.Но я не могу воспроизвести полученный файл * .mov.Продолжительность его воспроизведения равна 0. Итак, опять не повезло с идеей AVAssetReader + AVAssetWriter.
Так что мой вопрос / с: Можете ли вы использовать AVAssetReader и AVAssetWriter для объединения двух файлов?Кто-нибудь пытался сделать это и заставить его работать?Должен ли я просто использовать AVMutableVideoComposition вместо этого?
Я опубликую свой код, если необходимо.