Verwenden von AVMutableComposition iPhone
Ich verwende den folgenden Code, um die beiden Videos nacheinander zu streamen. Es werden jedoch keine Videos im Simulator angezeigt, sondern nur leere.
Wie kann ich auch durch diese beiden Videos suchen. Zum Beispiel, wenn ein Video 2 Minuten und das zweite 3 Minuten lang ist. Jetzt muss ich die Gesamtzeit dieser Videos abrufen und sie durchsuchen. Wenn ich den Schieberegler auf 4 Minuten schiebe, sollte das 2. Video ab Minute 2 abgespielt werden.
Ist es möglich?
<code>- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSURL *url1 = [NSURL URLWithString:@"http://www.tools4movies.com/dvd_catalyst_profile_samples/Harold%20Kumar%203%20Christmas%20bionic.mp4"]; NSURL *url2 = [NSURL URLWithString:@"http://www.tools4movies.com/dvd_catalyst_profile_samples/Harold%20Kumar%203%20Christmas%20tablet.mp4"]; NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:AVURLAssetPreferPreciseDurationAndTimingKey]; AVMutableComposition *composition = [[AVMutableComposition alloc] init]; asset1 = [[AVURLAsset alloc] initWithURL:url1 options:options]; AVURLAsset * asset2 = [[AVURLAsset alloc]initWithURL:url2 options:options]; CMTime insertionPoint = kCMTimeZero; NSError * error = nil; composition = [AVMutableComposition composition]; if (![composition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset1.duration) ofAsset:asset1 atTime:insertionPoint error:&error]) { NSLog(@"error: %@",error); } insertionPoint = CMTimeAdd(insertionPoint, asset1.duration); if (![composition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset2.duration) ofAsset:asset2 atTime:insertionPoint error:&error]) { NSLog(@"error: %@",error); } AVPlayerItem * item = [[AVPlayerItem alloc] initWithAsset:composition]; player = [AVPlayer playerWithPlayerItem:item]; AVPlayerLayer * layer = [AVPlayerLayer playerLayerWithPlayer:player]; [layer setFrame:CGRectMake(0, 0, 320, 480)]; [[[self view] layer] addSublayer:layer]; [player play]; } </code>
Kann mir jemand sagen, was der Fehler in meinem Code ist?