在iOS 4.0中使用AVPlayer进行HTTP实时stream式传输?
是否可以在iOS 4.0上使用AVPlayer的HTTP Live Streaming? 这显然是4.0的loggingfunction。 但是,如果我在运行iOS 4.0.1的3GS上运行Apple的SitchedStreamPlayer示例代码 ,则单击“加载电影”不会播放stream,但会出现错误:
2011-06-21 13:14:49.428 StitchedStreamPlayer [680:307]资产的曲目由于错误而未被加载:无法打开
MPMediaPlayer能够在相同的设备上播放相同的stream 。 但是,我需要AVPlayer的解决scheme。
有谁知道如何让苹果的StichedStreamPlayer代码工作在4.0? 运行时需求说它应该在“iOS 4.0或更高版本”上工作。
谢谢!
这是4.0中的一个错误,但我find了一个解决方法。 以下是使用AVPlayer加载video的正确方法:
AVPlayer *player = [AVPlayer playerWithURL:[NSURL URLWithString:@"http://qtdevseed.apple.com/addemo/ad.m3u8"]]; // now use KVO to decide when it's ready to play // works in both 4.3 and 4.0.1
来自StitchedStreamPlayer的代码在4.3中工作,但不在4.0.1中工作:
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:[NSURL URLWithString:@"http://qtdevseed.apple.com/addemo/ad.m3u8"] options:nil]; NSArray *tracksKeys = [NSArray arrayWithObjects:kTracksKey, kDurationKey, kPlayableKey, nil]; [asset loadValuesAsynchronouslyForKeys:tracksKeys completionHandler: ^{ NSError *error = nil; AVKeyValueStatus status = [asset statusOfValueForKey:[tracksKeys objectAtIndex:0] error:&error]; NSLog(@"status=%@,error=%@",(status==AVKeyValueStatusLoaded?@"Loaded":status==AVKeyValueStatusFailed?@"Failed":@"?!"),error); }]; // output in 4.3: status=Loaded,error=(null) // output in 4.0.1: status=Failed,error=Error Domain=AVFoundationErrorDomain Code=-11828 "Cannot Open" UserInfo=0x15f2a0 {NSLocalizedFailureReason=This media format is not supported., NSUnderlyingError=0x1599e0 "The operation couldn't be completed. (OSStatus error -12847.)", NSLocalizedDescription=Cannot Open}
有关更多信息,请参阅旧版本的StitchedStreamPlayer 。