带有流式 AVAsset -11800 错误的 AVExportSession
Posted
技术标签:
【中文标题】带有流式 AVAsset -11800 错误的 AVExportSession【英文标题】:AVExportSession with a streaming AVAsset -11800 Error 【发布时间】:2014-08-13 17:54:58 【问题描述】:我一直在使用 AVPlayer 播放由 Streaming URL 支持的基础资产的视频。
我正在尝试创建视频片段(只有 9 秒的剪辑),以便将剪辑保存在本地。
我用下面的代码尝试了 AVAssetExportSession,但会话每次都返回 AVAssetExportSessionStatusFailed。具体错误为Error Domain=AVFoundationErrorDomain Code=-11800,表示未知错误。
AVURLAsset *otherAsset = [[AVURLAsset alloc] initWithURL:streamURL options:options];
NSArray *exportPresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:otherAsset];
NSLog(exportPresets.description);
AVAssetExportSession *session = [AVAssetExportSession exportSessionWithAsset:otherAsset presetName:AVAssetExportPresetMediumQuality];
NSArray *supportedFileTypes = session.supportedFileTypes;
NSLog(supportedFileTypes.description);
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex: 0];
NSString *dstPath = [documentsDirectory stringByAppendingString:@"/sample.mov"];
NSURL *savetUrl = [NSURL fileURLWithPath:dstPath];
session.outputFileType = @"com.apple.quicktime-movie";
session.outputURL = savetUrl;
session.shouldOptimizeForNetworkUse = YES;
[session exportAsynchronouslyWithCompletionHandler:
^(void )
switch ([session status])
case AVAssetExportSessionStatusFailed:
NSLog([session error].description);
NSLog(@"Export failed: %@",[[session error]localizedDescription]);
break;
case AVAssetExportSessionStatusCancelled:
NSLog(@"Export canceled");
break;
default:
NSLog(@"Export Success, File Saved.");
break;
];
我已检查以确保我没有覆盖文件,并检查了 AVAssetExportSessionStatusFailed 的其他原因。
我猜 AVAssetExportSession 不适合与流媒体资产一起使用。 (我可能是错的)。
我的猜测是对的,还是我需要做其他事情。有没有更简单的方法来截取和缓存流式 URL?
感谢您的宝贵时间!
【问题讨论】:
【参考方案1】:据我所知,ios7下除了本地文件外没有办法导出。
不过在 iOS8 下似乎可以正常工作。
如果您不必设置 exportInterval,我建议您只使用 NSData.writeToFile(filePath, atomically: bool)。
希望这会有所帮助!
【讨论】:
以上是关于带有流式 AVAsset -11800 错误的 AVExportSession的主要内容,如果未能解决你的问题,请参考以下文章