2010-12-09 22 views
9

'dan boş dizinin sınırlarının ötesindeki dizin 0 Sesleri birleştirmek için aşağıdaki kodla denedim. Ben yürütmeye çalıştığınızda[NSMutableArray objectAtIndex:]: 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 tracksWithMediaType: AVMediaTypeAudio] objectAtIndex: 0]" Ben konsolda audioAsset1 yazdırmaya çalıştığımda o veriyor onu, hata

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

aşağıdaki Ama yazdırma "< AVURLAsset: 0x198920, URL = 'yol' >". Yolu kontrol ettim, o dosya orada.

Hatam nedir? Lütfen çözmem için bana yardım edin.

+0

'audioURL1''in değerini görebilir miyiz lütfen? –

+0

Hata ayıklama modunda kontrol ettim. AudioURL'den alıyorum. audioURL1'de değil. – jfalexvijay

+0

"[audioAsset1 tracksWithMediaType: AVMediaTypeAudio]" yazdırmayı denediğimde, şu ifadeyi yazdırıyor; "asset: ( )" - varlığın boş olduğu anlamına gelir. – jfalexvijay

cevap

33

Bu sorunu çözdüm;

Sadece ben deyimi

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

Teşekkür aşağıdaki şu deyimi

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


yerini almıştır.

+0

Sen bir hayat kurtarıcısın! – IanStallings

+2

Diğer yoldan yaptım ve problemimi çözdüm. Nasıl bilmiyorum :) –

+0

Bravo! Bir saat kaydettim. – AVEbrahimi

İlgili konular