[NSMutableArray objectAtIndex:]: индекс 0 за пределами пустого массива из AVURLAsset

Я попытался с помощью следующего кода объединить аудио.

AVMutableComposition* composition = [AVMutableComposition composition];
AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:audioURL options:nil];
AVURLAsset* audioAsset1 = [[AVURLAsset alloc]initWithURL:audioURL1 options:nil];
AVURLAsset* audioAsset2 = [[AVURLAsset alloc]initWithURL:audioURL1 options:nil];
AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
NSError* error = NULL;
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero,videoAsset.duration) 
                                       ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo]objectAtIndex:0] 
                                        atTime:kCMTimeZero  
AVMutableCompositionTrack *compositionAudioTrack1 = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
        [compositionAudioTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero,audioAsset1.duration) 
                                       ofTrack:[[audioAsset1 tracksWithMediaType:AVMediaTypeAudio]objectAtIndex:0] 
                                        atTime:kCMTimeZero
                                         error:&error];
AVMutableCompositionTrack *compositionAudioTrack2 = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
        [compositionAudioTrack2 insertTimeRange:CMTimeRangeMake(kCMTimeZero,audioAsset2.duration) 
                                       ofTrack:[[audioAsset2 tracksWithMediaType:AVMediaTypeAudio]objectAtIndex:0] 
                                        atTime:kCMTimeZero
                                         error:&error];

Когда я пытаюсь выполнить «[[audioAsset1 trackWithMediaType:AVMediaTypeAudio]objectAtIndex:0]», он выдает следующую ошибку

*** Terminating app due to uncaught exception 'NSRangeException', 
reason: '*** -[NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array'

Но когда я пытаюсь распечатать audioAsset1 в консоли, он печатает «‹AVURLAsset: 0x198920, URL = 'path'›». Я проверил путь, этот файл там.

в чем моя ошибка? Пожалуйста, помогите мне решить эту проблему.


person jfalexvijay    schedule 09.12.2010    source источник
comment
мы можем увидеть значение audioURL1, пожалуйста?   -  person Thomas Clayson    schedule 09.12.2010
comment
Я проверил в режиме отладки. Я получаю это от audioURL. не в audioURL1.   -  person jfalexvijay    schedule 09.12.2010
comment
Когда я пытаюсь напечатать [audioAsset1 trackWithMediaType:AVMediaTypeAudio], он печатает следующий оператор; актив : ( ) - это означает, что актив пуст.   -  person jfalexvijay    schedule 15.12.2010


Ответы (1)


Я решил эту проблему;

Просто я заменил следующее утверждение

NSURL *audioURL = [NSURL URLWithString:path];
AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:audioURL options:nil]

со следующим утверждением

NSURL *audioURL = [NSURL fileURLWithPath:path]
AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:audioURL options:nil]

Спасибо.

person jfalexvijay    schedule 15.12.2010
comment
Я поступил иначе, и это решило мою проблему. Я не знаю как. :) - person girish_vr; 30.01.2014
comment
Браво! Сэкономил час. - person AVEbrahimi; 19.02.2014
comment
ТЫ НАСТОЯЩИЙ MVP! - person Hyder; 20.01.2017
comment
Большое спасибо, братан .... да! вы спасаете жизнь iOS-разработчикам :p - person Dhiru; 02.02.2017