Редактирование видео в iOS - возможно ли объединить два видеофайла (бок о бок, не один за другим) в один, используя классы iOS 4 AVFoundation? - PullRequest
11 голосов
/ 22 апреля 2011

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

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

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

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

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

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

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

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

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

Спасибо.

Ответы [ 2 ]

11 голосов
/ 26 апреля 2011

Да, можно объединить 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 голосов
/ 15 января 2014

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

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

...