[英]AVAssetExportSession Won't Export Audio Recorded by AVAudioRecorder
[英]AVAssetExportSession exportAsynchronouslyWithCompletionHandle : export audio error
我正在使用AVAssetExportSession exportAsynchronouslyWithCompletionHandler导出音频,但是出错。
(在许多音频中,只有一个音频会发生此问题。)
+ (void)exportAudioWithAsset:(AVAsset *)asset exportPath:(nonnull NSString *)exportPath completion:(nonnull void (^)(BOOL, NSError * _Nullable, NSURL * _Nullable))completion {
if (!asset || !exportPath) {
if (completion) {
completion(NO, nil, nil);
}
return;
}
AVAssetExportSession *session = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetAppleM4A];
session.outputURL = [NSURL fileURLWithPath:exportPath];
session.outputFileType = AVFileTypeAppleM4A;
session.shouldOptimizeForNetworkUse = YES;
[session exportAsynchronouslyWithCompletionHandler:^{
if (session.status == AVAssetExportSessionStatusCompleted) {
NSData *data = [NSData dataWithContentsOfFile:exportPath];
if ([data length] > 0) {
if (completion) {
completion(YES, nil, [NSURL fileURLWithPath:exportPath]);
}
} else {
if ([[NSFileManager defaultManager] fileExistsAtPath:exportPath]) {
[[NSFileManager defaultManager] removeItemAtPath:exportPath error:nil];
}
if (completion) {
completion(NO, session.error, nil);
}
}
} else {
if ([[NSFileManager defaultManager] fileExistsAtPath:exportPath]) {
[[NSFileManager defaultManager] removeItemAtPath:exportPath error:nil];
}
if (completion) {
completion(NO, session.error, nil);
}
}
}];
}
会话的错误:错误域= AVFoundationErrorDomain代码= -11800“该操作无法完成” UserInfo = {NSLocalizedFailureReason =发生未知错误(-12769),NSLocalizedDescription =此操作无法完成,NSUnderlyingError = 0x283a97630 {Error Domain = NSOSStatusErrorDomain Code =- 12769“(null)”}}(此操作无法完成意味着无法完成)
为了解决此问题,我将AVAssetExportSession替换为AVAssetReader和AVAssertWriter进行导出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.