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

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

Существуют такие приложения, как "Video-Joiner".

Что я хочу сделать, это сопоставить 2 видео.

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

Сначала я записываю видео 1, используя переднюю лицевую камеру, стоящую слева от рамки. Затем видео 2 стоит справа. В видео 1 задаю вопрос и в видео 2 отвечаю.

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

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

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

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

Спасибо.

Ответ 1

Да, возможно объединить 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...

}

Ответ 2

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

Манипуляция видео