带有流式 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的主要内容,如果未能解决你的问题,请参考以下文章

WCF:使用带有消息契约的流式传输

使用模板表的 BigQuery 流式插入 - 503 错误

使用 HTTP NSURL 创建 AVAsset

为科尔多瓦视频编辑器修改 AVAsset 中的比特率

BigQuery,Python 批量插入 bigquery 以进行流式传输服务(“告诉”错误)

使用videojs进行实时流式传输的CORS和请求标头错误[重复]