大佬教程收集整理的这篇文章主要介绍了iOS9中缺少AVAssetExportSession音频,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
(void)export { self.videoComposition.renderScale = 1.0; self.videoComposition.animationTool = [self coreAnimationTool]; FakeAsset * assetFaker = [FakeAsset new]; [assetFaker fakeAssetWithDuration:self.currentTime completitionBlock:^(AVAsset *asset) { [self addEmptyBACkgroundTrackFromAsset:asset]; AVAssetExportSession * exportSession = [AVAssetExportSession exportSessionWithAsset:[self.composition copy] presetName:AVAssetExportPresetHighestQuality]; [MovieExport setCurrentexporter:exportSession]; NSUInteger i = 0; NSString * path; do { path = [NstemporaryDirectory() StringByAppendingPathComponent:[NSString StringWithFormat:@"movieExport%i.mov",i]]; i++; } while ([[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:NULL]); NSURL * url = [NSURL fileURLWithPath:path]; if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { [[NSFileManager defaultManager] removeItemAtURL:url error:nil]; } exportSession.outputURL = url; exportSession.outputFileType = AVFileTypeMPEG4; exportSession.au@L_764_8@mix = self.au@L_764_8@mix; exportSession.videoComposition = self.videoComposition; exportSession.timeRange = CMTimeRangeMake(kCMTimeZero,self.currentTimE); [exportSession exportAsynchronouslyWithCompletionHandler:^{ switch (exportSession.status) { case AVAssetExportSessionStatusCompleted: self.callBACk(@{MovieCreatorVideoURL : exportSession.outputURL},nil); break; case AVAssetExportSessionStatusFailed: self.callBACk(nil,exportSession.error); break; case AVAssetExportSessionStatusCancelled: self.callBACk(nil,exportSession.error); break; default: break; } }]; }]; } - (void)exportForPlayBACk { self.videoComposition.renderScale = 2.0; FakeAsset * assetFaker = [FakeAsset new]; [assetFaker fakeAssetWithDuration:self.currentTime completitionBlock:^(AVAsset *asset){ [self addEmptyBACkgroundTrackFromAsset:asset]; AVPlayerItem * playerItem = [AVPlayerItem playerItemWithAsset:self.composition]; playerItem.videoComposition = self.videoComposition; playerItem.au@L_764_8@mix = self.au@L_764_8@mix; MovieMetadata * MetaData = [MovieMetadata new]; MetaData.orderedElements = self.orderedElements; MetaData.orderedR_316_11845@arkers = self.movieMarkers; MetaData.elementBeginTimes = self.elementBeginTimes; MetaData.filmSize = self.filmSize; MetaData.filmFormat = self.filmFormat; MetaData.filmQuality = self.filmQuality; self.userInfos = @{MovieCreatorAnimations : self.animationLayer,MovieCreatorAVPlayerItem : playerItem,MovieCreatorMetadata : MetaData}; self.callBACk(self.userInfos,nil); }];
}
要解决此问题,当我初始化AVMutableCompositionTrack时,我添加没有声音的音频.
-(void)initEmptyAudio:(AVMutableCompositionTrack *) obj{ NSString* path = [[NSBundle mainBundle] pathForresource:@"emptyAudio" ofType:@"mp3"]; NSURL* audio_inputFileUrl = [NSURL fileURLWithPath:path]; AVURLAsset* audioAsset = [[AVURLAsset alloc]initWithURL:audio_inputFileUrl options:nil]; CMTimeRange audio_timeRange = CMTimeRangeMake(kCMTimeZero,audioAsset.duration); [obj insertTimeRange:audio_timeRange ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectATindex:0] atTime:CMTimeMake(0,1) error:nil]; }
以上是大佬教程为你收集整理的iOS9中缺少AVAssetExportSession音频全部内容,希望文章能够帮你解决iOS9中缺少AVAssetExportSession音频所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。