AVURLAsset无法加载远程文件
我有一个使用AVURLAsset的问题。
NSString * const kContentURL = @ "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"; ... NSURL *contentURL = [NSURL URLWithString:kContentURL]; AVURLAsset *asset = [AVURLAsset URLAssetWithURL:contentURL options:nil]; [asset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:tracksKey] completionHandler:^{ ... NSError *error = nil; AVKeyValueStatus status = [asset statusOfValueForKey:tracksKey error:&error]; ... }
在完成块中,状态是AVKeyValueStatusFailed,错误消息是“无法打开”。 我见过的所有例子,使用本地文件,所以也许有使用远程文件的问题…
问候,昆汀
您不能直接创build一个HTTP Livestream的AVURLAsset
,如Apple的AV Foundation编程指南所述 。 你必须创build一个带有streamurl的AVPlayerItem,并用它实例化一个AVPlayer
AVPlayerItem *pItem = [AVPlayerItem playerItemWithURL:theStreamURL]; AVPlayer *player = [AVPlayer playerWithPlayerItem:pItem];
如果你需要访问后面的AVURLAsset
,你可以按照这些步骤。
步骤1 /注册玩家项目status
属性的变化
[playerItem addObserver:self forKeyPath:@"status" options:0 context:nil];
第2步/在observeValueForKeyPath:ofObject:change:context:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if ([keyPath isEqualToString:@"status"]) { AVPlayerItem *pItem = (AVPlayerItem *)object; if (pItem.status == AVPlayerItemStatusReadyToPlay) { // Here you can access to the player item's asset // eg: self.asset = (AVURLAsset *)pItem.asset; } } }
编辑 :纠正了答案
- AVAssetImageGenerator在复制图像时失败
- 使用AVFoundation混合图像和video
- 我如何知道用户点击iPhone中播放控件的快进和快退button
- AVFoundation在预览中将图像的方向偏离90度,但在相机图像的方向上偏好
- AVPlayerItem失败,AVStatusFailed和错误代码“无法解码”
- 照片框架:与assetsd的连接被中断或资产死亡
- 如何在iOS中将kCVPixelFormatType_420YpCbCr8BiPlanarFullRange缓冲区转换为UIImage
- 录制AVFoundation与自定义尺寸的video?
- 我可以使用AVCaptureSession将AACstream编码到内存吗?