AVAssetExportSession estimatedOutputFileLength始终返回0

Jon*_*lis 4 iphone cocoa-touch objective-c avfoundation ios

遇到问题,其中estimatedOutputFileLength属性AVAssetExportSession总是返回0(并在模拟器上返回-9223372036854775808).

我已经尝试了一切来使这个工作,尝试不同的outputFileTypes,切换shouldOptimizeForNetworkUse打开和关闭,指定(或不指定)outputURL...尽管这一切,似乎没有任何工作,我开始认为这可能是一个错误在SDK中.

这是我的代码:

AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetMediumQuality]; // doesn't matter which preset is used
//exportSession.shouldOptimizeForNetworkUse = YES;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
NSLog(@"bytes = %lld", exportSession.estimatedOutputFileLength);
Run Code Online (Sandbox Code Playgroud)

我只是想不通为什么这不起作用!(iOS 6,iPhone 5)

liu*_*liu 7

您可以通过在exportSession上设置正确的timeRange来解决此问题:

exportSession.timeRange = CMTimeRangeMake(kCMTimeZero, asset.duration);
Run Code Online (Sandbox Code Playgroud)

似乎在iOS中,AVAssetExportSessionInternal.timeRange在估计文件长度时没有得到明智的结果.