मैं एक AVAssetExportSession
का उपयोग कर अपने सही ओरिएंटेशन के लिए एक वीडियो को घुमाने के लिए कोशिश कर रहा हूँ और मैं हमेशा निम्न त्रुटि प्राप्त के साथ एक AVAsset रोटेट करें:AVAssetExportSession
Error Domain=AVFoundationErrorDomain Code=-11841 "The operation couldn’t be completed. (AVFoundationErrorDomain error -11841.)"
कि AVErrorInvalidVideoComposition
करने के लिए अनुवाद, लेकिन मैं के साथ कुछ भी गलत नहीं देख सकते हैं मेरी वीडियो संरचना। यहां कोड है:
AVAssetTrack *sourceVideo = [[avAsset tracksWithMediaType:AVMediaTypeVideo] lastObject];
AVAssetTrack *sourceAudio = [[avAsset tracksWithMediaType:AVMediaTypeAudio] lastObject];
CGAffineTransform preferredTransform = [sourceVideo preferredTransform];
AVMutableComposition *composition = [[AVMutableComposition alloc] init];
AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo
preferredTrackID:kCMPersistentTrackID_Invalid];
AVAssetExportSession *exporter = [[[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetMediumQuality] autorelease];
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, avAsset.duration)
ofTrack:sourceVideo
atTime:kCMTimeZero
error:nil];
if(!CGAffineTransformIsIdentity(preferredTransform)) {
AVMutableVideoComposition *videoComposition = [AVMutableVideoComposition videoComposition];
videoComposition.renderSize = CGSizeMake([avAsset naturalSize].height, [avAsset naturalSize].width);
videoComposition.frameDuration = CMTimeMake(1, compositionVideoTrack.naturalTimeScale);
AVMutableVideoCompositionLayerInstruction *instruction = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:sourceVideo];
[instruction setTransform:preferredTransform atTime:kCMTimeZero];
AVMutableVideoCompositionInstruction *videoTrackInstruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
videoTrackInstruction.timeRange = CMTimeRangeMake(kCMTimeZero, avAsset.duration);
videoTrackInstruction.layerInstructions = [NSArray arrayWithObject:instruction];
[videoComposition setInstructions:[NSArray arrayWithObject:videoTrackInstruction]];
exporter.videoComposition = videoComposition;
}
AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio
preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, avAsset.duration)
ofTrack:sourceAudio
atTime:kCMTimeZero
error:nil];
exporter.outputURL = tempPathUrl;
exporter.outputFileType = AVFileTypeQuickTimeMovie;
[exporter exportAsynchronouslyWithCompletionHandler:^{ }];
संरचना के साथ क्या गलत हो सकता है? मैं प्रलेखन के माध्यम से किया गया है और अब तक इसके साथ कुछ भी गलत नहीं देख सकता।
क्या आपको कभी पता चला कि आपको यह त्रुटि क्यों मिल रही है? – shabbirv
ठीक है, तो ऐसा लगता है कि आधा हिस्सा गिंजरब्रेडमेन में जाता है, जो उत्तर नहीं देता है। ऐसा लगता है कि वास्तव में StackOverflow पर आईओएस डेवलपर्स का एक समुदाय नहीं है। यह शर्मनाक है। –
आईओएस 7.0.3 पर इसी तरह की समस्या से पीड़ित ... मेरा कोड जो समान काम करता है जब मैं सिर्फ रिकॉर्ड किए गए वीडियो का उपयोग करता हूं, लेकिन जब मैं लाइब्रेरी से वीडियो चुनता हूं तो विफल रहता है। यह मेरे लिए बहुत कम समझ में आता है। जब मुझे समाधान मिल जाए तो आपको बताएगा। AVExportSession का उपयोग नहीं करना पड़ सकता है। – DogpatchTech