大佬教程收集整理的这篇文章主要介绍了如何在OS X上的Swift中调整大小,裁剪和导出AVAsset?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用AVAssetExportSession导出AVAsset,如果未将videoComposition设置为AVAssetExportSession,它可以正常工作.以下代码导出资产没有问题,但由于videoComposition行被注释掉,因此它不会调整大小和裁剪.
self.asset = AVAsset( URL: validURL )! if let exportSession = AVAssetExportSession( asset: self.asset,presetName: AVAssetExportPresetAppleProRes422LPCM ) { exportSession.outputURL = exportURL exportSession.outputFileType = AVFileTypeQuickTimeMovie // exportSession.videoComposition = self.videoComposition // *** problematic line exportSession.timeRange = CMTimeRangeMake( kCMTimeZero,self.asset.duration ) exportSession.exportAsynchronouslyWithCompletionHandler( { () -> Void in print( "[export completed]" ) }) }
但是如果我将videoComposition设置为AVAssetExportSession以通过删除注释来调整大小和裁剪资源,则表达的文件只有调整大小和裁剪的视频的第一帧,而第二帧和后面的帧都是黑帧,而音频导出没有问题.
我设置的videoComposition如下. (在此示例中,渲染大小和仿射变换是固定的,以简化代码)
var videoComposition: AVVideoComposition { //--------------- // composition //--------------- let composition = AVMutableVideoComposition() composition.renderSize = NsmakeSize( 720,480 ) // fixed size in this example composition.frameDuration = self.asset.duration //--------------- // instruction //--------------- let instruction = AVMutableVideoCompositioninstruction() instruction.timeRange = CMTimeRangeMake( kCMTimeZero,self.asset.duration ) //------------------------- // transform instruction //------------------------- let videoTracks = self.asset.tracksWithMediaType( AVMediaTypeVideo ) let assetTrack = videoTracks[0] let layerinstruction = AVMutableVideoCompositionLayerinstruction( assetTrack: assetTrack ) let transform = CGAffineTransformMake( 1.5,// fixed transform in this example 0.0,0.0,2.0,-100.0,-100.0 ) layerinstruction.setTransformRampFromStartTransform( transform,toEndTransform: transform,timeRange: CMTimeRangeMake( kCMTimeZero,self.asset.duration ) ) instruction.layerinstructions = [ layerinstruction ] composition.instructions = [ instruction ] return composition }
如何避免第二帧和后一帧是黑色并成功导出所有调整大小和裁剪的帧?
以上是大佬教程为你收集整理的如何在OS X上的Swift中调整大小,裁剪和导出AVAsset?全部内容,希望文章能够帮你解决如何在OS X上的Swift中调整大小,裁剪和导出AVAsset?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。