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

#ios4 #avfoundation #video-editing #adobe-premiere #avvideocomposition

#ios4 #avfoundation #редактирование видео #adobe-premiere #avvideocomposition

Вопрос:

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

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

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

Моя идея приложения — SelfInterviewer, пожалуйста, не воруйте 🙂

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

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

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

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

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

Спасибо.

Комментарии:

1. вы нашли решение для этого??

2. ПРИВЕТ @Krishnan, как дела… Мне нужна ваша помощь, серьезно… Я застрял с каким-то таким же вопросом… Я должен показывать видео бок о бок после слияния… Оба видео отображаются, НО не отображаются должным образом, как бок о бок…

Ответ №1:

Да, возможно объединить 2 видео:
1. Добавьте оба ресурса в изменяемую композицию во время запуска 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...

}
  

Комментарии:

1. спасибо, я попробую это. К сожалению, я не могу проголосовать за ответ, поскольку я новичок в SO.

2. Но addmutablet trackwithmediatype: preferredTracfirst: API не существует. Существует только API Addmutablet trackwithmediatype:preferredTrackID:. Я попробовал с помощью самого API Addmutablet trackwithmediatype:preferredTrackID, и я получаю только первое видео в экспортированном видео.

3. Извините за поздний ответ. Вы должны использовать один изменяемый композиционный трактат вместо двух.

4. [secondTrack insertTimeRange:CMTimeRangeMake (kCMTimeZero, secondAsset.duration) ofTrack: [[Дорожки secondAsset с педиатрическим типом: AVMediaTypeVideo] objectAtIndex: 0] Ошибка atTime: kCMTimeZero: ноль]; Я получаю предупреждение об этом, и это предупреждение — «Метод экземпляра ‘-setPreferredTransform:’ не найден (возвращаемый тип по умолчанию равен ‘id’)» — Есть идеи, почему это происходит.

5. я получаю только первое видео в экспортированном видео, но продолжительность правильная. мой MutableComposition выделяется один раз, как указано. пожалуйста, помогите.

Ответ №2:

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

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

Комментарии:

1. @Torongo ты уверен , что это сработает , на всякий случай abdulazeem.wordpress.com/2012/04/02 /…

2. Привет @Torongo… Мне нужна ваша помощь в этом руководстве… Хотя приведенная выше ссылка является отличным руководством… Но как я могу показывать видео бок о бок, так же, как приложение для караоке, или вы можете сказать, что то же самое, как дуэтное видео… Я буду очень признателен за ваше руководство… Спасибо

3. Привет @Mr.G, как дела… Мне нужна ваша помощь в этом руководстве… Хотя приведенная выше ссылка является отличным руководством… Но как я могу показывать видео бок о бок, так же, как приложение для караоке, или вы можете сказать, что то же самое, как дуэтное видео… Я буду очень признателен за ваше руководство… Спасибо

4. @Mr.Ahtazaz Я делал это 4 года назад, но я не думаю, что это сложно сделать, я думаю, вам нужно настроить рамку просмотра видео

5. @Mr.G Как я могу повторить одно видео до воспроизведения большого видео?