iOS Video Editing - Возможно ли объединить (рядом друг с другом, не один за другим) два видеофайла в один, используя классы iOS 4 AVFoundation?

Я знаю, что вы можете объединить несколько клипов и создать одно видео, добавляя один за другим, используя классы AVFoundation - AVURLAsset, AVMutableComposition, AVMutableCompositionTrack и т. Д.

Есть такие приложения, как "Video-Joiner", которые делают это.

Я хочу сопоставить 2 видео.

Идея моего приложения - SelfInterviewer, пожалуйста, не кради:)

Сначала я записываю видео 1, используя фронтальную камеру, которая стоит слева от кадра. Тогда видео 2 стоит направо. В видео 1 задайте вопрос, а в видео 2 я отвечу.

Когда я сливаюсь, это должно выглядеть так, как будто я сам допрашиваю.

Я почти уверен, что это неосуществимо в iOS, просто хотел подтвердить.

Кроме того, если это не пойдет, меня заинтересуют любые решения на стороне сервера - загрузите два видео и выполните то же самое. Я думаю, что премьера Adobe может сделать это. Не уверен, что у них есть публичный API.

Ценю любые идеи.

Благодарю.

2 ответа

Решение

Да можно объединить 2 видео:
1. Добавьте оба ресурса в AVMutableComposition в момент начала 0.
2. Установите предпочтительное Преобразование для дорожек, в этом примере преобразование масштаба.

    - (void) mergeVideos{
    ///... after getting hold or your assets....firstAsset, secondAsset

    AVMutableComposition* mixComposition = [AVMutableComposition composition];

    AVMutableCompositionTrack *firstTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo 
                                                                      preferredTracfirst:kCMPersistentTracfirst_Invalid];
    [firstTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, firstAsset.duration) 
                        ofTrack:[[firstAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 
                         atTime:kCMTimeZero error:nil];

    AVMutableCompositionTrack *secondTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo 
                                                                       preferredTracfirst:kCMPersistentTracfirst_Invalid];

    [secondTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, secondAsset.duration)
                         ofTrack:[[secondAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 
                          atTime:kCMTimeZero error:nil];    

    [secondTrack setPreferredTransform:CGAffineTransformMakeScale(0.25f,0.25f)]; 

    //... export video here...

}

Я нашел эту ссылку, когда я пытаюсь сделать то же самое, но для меня это не бок о бок, его видео вверху другого видео, Вы можете сделать то же самое по этой ссылке

Видео манипуляции

Другие вопросы по тегам