iphone - [NSMutableArray objectAtIndex :]: index 0 beyond bounds for empty array from AVURLAsset

标签 iphone audio merge 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时,它正在打印“”。我已经检查过路径,该文件就在那里。

我的错误是什么?请帮我解决这个问题。

最佳答案

我解决了这个问题;

只是我替换了以下语句

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

带有以下声明

NSURL *audioURL = [NSURL <b>fileURLWithPath</b>:path]
AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:audioURL options:nil]

谢谢。

关于iphone - [NSMutableArray objectAtIndex :]: index 0 beyond bounds for empty array from AVURLAsset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4398764/

相关文章:

mysql - 合并两行并搜索

git:分享 merge 两个分支的工作

python使用键加入列表列表的列表

iphone - 使用自定义框架

ios - 自动布局 iPhone 5 错误应用商店

javascript - 无法清除setInterval

audio - 原始声音播放

audio - 将音频添加到 ffmpeg 视频流

iphone - 为什么当我在 -drawRect :? 中绘制字符串时换行符不起作用

iphone - 以编程方式触发 didEndOnExit