将一个HTTPstream插入一个AVMutableComposition

我试图插入AVPlayerItem的AVPlayerItemStatusReadyToPlayAVMutableComposition像这样:

 composition_ = [[AVMutableComposition alloc] init]; insertionPoint_ = kCMTimeZero; item_ = [[AVPlayerItem playerItemWithURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]] retain]; [item_ addObserver:self forKeyPath:@"status" options:0 context:nil]; player_ = [[AVPlayer playerWithPlayerItem:item_] retain]; [player_ addObserver:self forKeyPath:@"currentItem.duration" options:0 context:nil]; /** * append a player-item to our composition */ - (void)addItemToComposition:(AVPlayerItem *)item { NSError *error = nil; VTRACE(@"item duration: %g", CMTimeGetSeconds(item.duration)); if (![composition_ insertTimeRange:CMTimeRangeMake(kCMTimeZero, item.duration) ofAsset:item.asset atTime:insertionPoint_ error:&error]) { VTRACE(@"error: %@", error); } } /** * simplified value observer callback */ - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if ([object isKindOfClass:[AVPlayerItem class]]) { AVPlayerItem *item = (AVPlayerItem *)object; //playerItem status value changed? if ([keyPath isEqualToString:@"status"]) { //yes-> switch(item.status) { case AVPlayerItemStatusFailed: VTRACE(@"player item status failed"); break; case AVPlayerItemStatusReadyToPlay: VTRACE(@"player item status is ready to play"); [self addItemToComposition:player_.currentItem]; break; case AVPlayerItemStatusUnknown: VTRACE(@"player item status is unknown"); break; } } } else if([object isKindOfClass:[AVPlayer class]]) { if ([keyPath isEqualToString:@"currentItem.duration"]) { //yes-> VTRACE(@"player item duration available"); } } } 

不幸的是,我得到的只是这个来自调用AVMutableComposition insertTimeRange:ofAsset:atTime:error:糟糕错误消息AVMutableComposition insertTimeRange:ofAsset:atTime:error:

2011-11-29 22:24:59.446 XXX [13626:10703] – [XXX addItemToComposition:] – error:Error Domain = AVFoundationErrorDomain Code = -11800“操作无法完成”UserInfo = 0x7699f30 {NSLocalizedFailureReason =发生错误(-12780),NSUnderlyingError = 0xd124dd0“操作无法完成(OSStatus错误-12780。)”,NSLocalizedDescription =操作无法完成}

我错过了什么?

为什么不能将项目插入到作文中?

当检查AVPlayerItemAVURLAsset时,我也注意到tracks数组被分配但是是空的。 这是否是原因,如果是这样,我怎样才能让AVURLAsset正确地保持有效的轨道?

那么,我从另一个来源得到答案,我不喜欢它…

显然,只能将本地项目(资产)插入AVMutableComposition ,远程项目(如HTTPvideostream)将无法工作。

文件没有这么说,而且我收到的错误信息是无用的这个事实似乎是苹果公司的一个遗漏。 我提交了一个错误报告来改善这种情况。

苹果雷达Bug Id:10517711

打开雷达错误报告 。