2013-06-12 4 views
1

я пытаюсь merge.mp4 и .caf файл, поэтому я использую следующий код,с вопросом создания AVMutableComposition видео

AVMutableCompositionTrack *compositionVideoTrack = 
[mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo 
          preferredTrackID:kCMPersistentTrackID_Invalid]; 
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) 
           ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 
                   atTime:kCMTimeZero 
                    error:nil]; 

, но я получаю ошибку

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array' *** First throw call stack: (0x32c4d2a3 0x3aae397f 0x32b98b75 0x748e7 0x74e61 0x34b400c5 0x34b40077 0x34b40055 0x34b3f90b 0x34b3fe01 0x34a685f1 0x34a55801 0x34a5511b 0x367495a3 0x32c22683 0x32c21ee9 0x32c20cb7 0x32b93ebd 0x32b93d49 0x367482eb 0x34aa9301 0x6f767 0x6f708) libc++abi.dylib: terminate called throwing an exception


все требуют каркаса и .dylib файл прилагается.

+2

может быть проблема из-за [[videoAsset tracksWithMediaType: AVMediaTypeVideo] objectAtIndex: 0] ... [videoAsset tracksWithMediaType: AVMediaTypeVideo] может быть возвращение ноль. Проверьте – iCoder

ответ

2

Распечатать количество элементов массива. Это должен быть пустой массив, поэтому ваше приложение разбивается. Проверь это. NSlog(@"array count => %d",[videoAsset tracksWithMediaType:AVMediaTypeVideo]);

и замените код на код ниже, чтобы избежать сбоев.

AVMutableCompositionTrack *compositionVideoTrack = 
    [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo 
           preferredTrackID:kCMPersistentTrackID_Invalid]; 
    NSArray *dataSourceArray = [NSArray arrayWithArray: [videoAsset tracksWithMediaType:AVMediaTypeVideo]; 
    NSlog(@"array count => %d",[dataSourceArray count]); 
    [compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) 
            ofTrack:([dataSourceArray count]>0)?[dataSourceArray objectAtIndex:0]:nil 
                    atTime:kCMTimeZero 
                     error:nil]; 
+0

благодаря работе кода ... без каких-либо ошибок. –

+0

@utkal welcome :) – Divyu

+0

как я могу создать видео, если 'dataSourceArray' был пуст? –

Смежные вопросы