我一直在使用AVPlayer播放由流媒体网址支持的基础资产的视频。
我正在尝试创建视频剪辑(仅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?
谢谢你的时间!
答案 0 :(得分:0)
据我所知,在iOS7下无法导出本地文件以外的其他文件。
虽然在iOS8下似乎工作正常。
如果您不必设置exportInterval,我建议您只使用NSData.writeToFile(filePath,atomically:bool)。
希望这会有所帮助!