AVExportSession与流AVAsset -11800错误

时间:2014-08-13 17:54:59

标签: ios objective-c ios7 avfoundation

我一直在使用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?

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

据我所知,在iOS7下无法导出本地文件以外的其他文件。

虽然在iOS8下似乎工作正常。

如果您不必设置exportInterval,我建议您只使用NSData.writeToFile(filePath,atomically:bool)。

希望这会有所帮助!