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

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

Для этого есть такие приложения, как Video-Joiner.

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

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

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

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

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

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

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

Спасибо.


person Naga    schedule 22.04.2011    source источник
comment
вы нашли решение для этого ??   -  person Mr.G    schedule 14.01.2014
comment
Привет, @Krishnan, Как дела... Мне нужна твоя помощь, серьезно... Я застрял с каким-то одним и тем же вопросом... Мне нужно показать видео рядом после слияния... Оба видео показываются, НО не показывает правильно, как рядом ...   -  person Ahtazaz    schedule 12.04.2019


Ответы (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...

}
person LiveMixBox    schedule 26.04.2011
comment
спасибо, я попробую. К сожалению, я не могу проголосовать за ответ, так как я новичок в SO. - person Naga; 27.04.2011
comment
Но addMutableTrackWithMediaType: PreferredTracfirst: API не существует. Существует только API addMutableTrackWithMediaType:preferredTrackID:. Я попытался с API addMutableTrackWithMediaType:preferredTrackID, и я получаю только первое видео в экспортированном видео. - person spd; 14.12.2011
comment
Извините за поздний ответ. ВАМ следует использовать один тракт MutableComposition вместо двух. - person Splendid; 15.12.2011
comment
[secondTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, secondAsset.duration) ofTrack:[[secondAsset trackWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error:nil]; Я получаю предупреждение об этом, и это предупреждение - Метод экземпляра '-setPreferredTransform:' не найден (тип возврата по умолчанию равен 'id') - Любая идея, почему это происходит. - person Sameera Chathuranga; 23.10.2012
comment
я получаю только первое видео в экспортированном видео, но продолжительность правильная. мой MutableComposition выделяется один раз, как указано. пожалуйста помоги. - person Arnlee Vizcayno; 02.02.2013
comment
@Mr.G Понятия не имею, я не могу заставить его работать .. Я вижу только одну из видеодорожек. В зависимости от того, какой трек был добавлен первым. Если я сначала добавлю второй, даже с трансформацией, он все равно отображается как полноэкранный, а другой трек теперь не видно.. Вы нашли способ? - person Sti; 25.10.2014
comment
да, проверьте мою ссылку ниже, я использовал это, чтобы сделать видео на видео - person Mr.G; 26.10.2014

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

обработка видео

person Mr.G    schedule 15.01.2014
comment
@Torongo, ты уверен, это работает, на всякий случай -ios/" rel="nofollow noreferrer">abdulazeem.wordpress.com/2012/04/02/ - person Mr.G; 18.01.2019
comment
Привет @Torongo ... Мне нужна ваша помощь в этом уроке ... Хотя приведенная выше ссылка - отличный урок ... Но как я могу показывать видео рядом, так же, как приложение караоке, или вы можете сказать то же самое, как Дуэт Видео... Я буду очень признателен за ваше руководство... Спасибо - person Ahtazaz; 15.04.2019
comment
Привет @Mr.G. Как дела... Мне нужна ваша помощь в этом уроке... Хотя приведенная выше ссылка является отличным уроком... Но как я могу показывать видео рядом, как приложение караоке или вы? могу сказать то же самое, что и Duet Video... Я буду очень признателен за ваше руководство... Спасибо - person Ahtazaz; 15.04.2019
comment
@Mr.Ahtazaz Я сделал это 4 года назад, но я не думаю, что это сложно сделать, я думаю, вам нужно настроить рамку просмотра видео - person Mr.G; 03.05.2019
comment
@Mr.G Как я могу повторять одно видео, пока не будет воспроизведено большое видео? - person Dixit Akabari; 04.12.2019
comment
@Mr.G как? объясните пожалуйста. - person Dixit Akabari; 05.12.2019
comment
Что вам нужно сделать, так это продолжить воспроизведение, связать два видеосэмпла вместе и воспроизвести. что вы подразумеваете под большим воспроизведением видео? - person Mr.G; 06.12.2019