ios - AVAssetExportSession sporadically causing black frame -
i attempting crop video take within ios app, , export mp4. original video records perfectly, 50% of time when crop video, there black frame in beginning.
here code.
avurlasset *asset = [avurlasset urlassetwithurl:videourl options:@{avurlassetpreferprecisedurationandtimingkey:@yes}]; avmutablecomposition *composition = [avmutablecomposition composition]; avmutablecompositiontrack *videotrack = [composition addmutabletrackwithmediatype:avmediatypevideo preferredtrackid:kcmpersistenttrackid_invalid]; avassettrack *assettrack = [[asset trackswithmediatype:avmediatypevideo] firstobject]; cmtime duration = assettrack.timerange.duration; [videotrack inserttimerange:cmtimerangemake(kcmtimezero, duration) oftrack:assettrack attime:kcmtimezero error:nil]; avmutablevideocomposition *videocomposition = [avmutablevideocomposition videocomposition]; videocomposition.frameduration = cmtimemake(1, 30.0); videocomposition.rendersize = cgsizemake(videotrack.naturalsize.height, videotrack.naturalsize.height); avmutablevideocompositionlayerinstruction *transformer = [avmutablevideocompositionlayerinstruction videocompositionlayerinstructionwithassettrack:videotrack]; cgaffinetransform t2 = cgaffinetransformrotate(t1, m_pi_2); [transformer settransform:t2 attime:kcmtimezero]; avmutablevideocompositioninstruction *instruction = [avmutablevideocompositioninstruction videocompositioninstruction]; instruction.layerinstructions = @[transformer]; instruction.timerange = cmtimerangemake(kcmtimezero, duration); videocomposition.instructions = @[instruction]; avassetexportsession *exporter = [[avassetexportsession alloc] initwithasset:composition presetname:avassetexportpresethighestquality]; exporter.videocomposition = videocomposition; exporter.outputurl = outputurl; exporter.outputfiletype = avfiletypempeg4; [exporter exportasynchronouslywithcompletionhandler:^{ //stuff }];
Comments
Post a Comment