iphone - AVAssetExportSession estimatedOutputFileLength 总是返回 0

标签 iphone ios objective-c cocoa-touch avfoundation

AVAssetExportSessionestimatedOutputFileLength 属性总是返回 0(并返回 -9223372036854775808模拟器)。

我已尽一切努力让它工作,尝试不同的 outputFileType,打开和关闭 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);

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

最佳答案

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

exportSession.timeRange = CMTimeRangeMake(kCMTimeZero, asset.duration);

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

关于iphone - AVAssetExportSession estimatedOutputFileLength 总是返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328576/

相关文章:

ios - 我是否需要有公司网站才能将应用程序提交到 Appstore

objective-c - 根据其包含的文本更改标签的颜色

ios - 设置 SKShapeNode 一个角的半径

ios - 不允许其他应用播放音乐

iphone - 是否可以通过 iPhone 和 Android 库使用信用卡详细信息结帐?

iphone - 如何在抖动效果上制作动画图像?

ios - 您使用的组件错误 shyNavBarManager

ios - 将来自 REST API 的 JSON 数据快速填充到 TableView 不起作用

iphone - 为什么在 Objective-C 上保留属性可能不保留?

ios - 一个有争议的类似委托(delegate)的事件通知模式