AVAssetExportSession剪切视频转换问题
创始人
2024-11-12 20:00:33
0次

使用AVMutableComposition、AVMutableVideoComposition和AVMutableAudioMix创建新的AVAsset,并将其导出为视频文件。下面是示例代码:

AVURLAsset *originalAsset = [[AVURLAsset alloc] initWithURL:originalURL options:nil];
AVMutableComposition *composition = [AVMutableComposition composition];

AVAssetTrack *videoTrack = [[originalAsset tracksWithMediaType:AVMediaTypeVideo] firstObject];
AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];

[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, originalAsset.duration)
                            ofTrack:videoTrack
                             atTime:kCMTimeZero
                              error:nil];

AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetMediumQuality];

AVMutableVideoComposition *videoComposition = [AVMutableVideoComposition videoComposition];
videoComposition.renderSize = CGSizeMake(640, 640);
videoComposition.frameDuration = CMTimeMake(1, 30);

AVMutableVideoCompositionInstruction *instruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
instruction.timeRange = CMTimeRangeMake(kCMTimeZero, composition.duration);

AVMutableVideoCompositionLayerInstruction *layerInstruction = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:compositionVideoTrack];
[layerInstruction setTransform:CGAffineTransformMakeTranslation(64, 64) atTime:kCMTimeZero];

instruction.layerInstructions = @[layerInstruction];
videoComposition.instructions = @[instruction];
exportSession.videoComposition = videoComposition;
exportSession.outputFileType = AVFileTypeMPEG4;
exportSession.outputURL = outputFileURL;
[exportSession exportAsynchronouslyWithCompletionHandler:^{
    // Handle export completion or errors
}];

该代码将从原始视频文件中提取视频轨道,并使用AVMutableComposition创建新的AVAsset。AVMutableVideoComposition和AVMutableAudioMix对象用于对导出视频进行剪切和转换。最终,AVAssetExportSession用于将新的AVAsset导出为MPEG-4文件。

相关内容

热门资讯

盘点一款辅助器!wpk透视辅助... 很多人使用云端 AI 时,都担心wpk透视辅助、内部资料上传带来隐私风险。这款本地运行的 AI 黑科...
必看攻略辅助器!wpk有那种辅... 必看攻略辅助器!wpk有那种辅助吗,德普之星外卦神器软件平台(真是真的是有辅助器)AI 智能体黑科技...
揭秘攻略辅助挂!wpk有辅助器... 揭秘攻略辅助挂!wpk有辅助器吗,德扑之星到底有挂吗安装(确实存在有辅助挂)AI 智能体黑科技再上新...
我来分享辅助挂!wepoker... AI 黑科技赛道又上新,这款智能处理工具堪称效率开挂,专门面向短视频创作者打造。它打通脚本撰写、AI...
一分钟了解透视挂!wepoke... AI 黑科技赛道又上新,这款智能处理工具堪称效率开挂,专门面向短视频创作者打造。它打通脚本撰写、AI...
2分钟细说透视!智星德州插件最... 您好,2分钟细说透视!智星德州插件最新版本更新内容详解,微扑克真的有挂吗教程(一贯存在有透视)这款游...
科普攻略辅助!wepoker怎... 『标题:当前标题』主打赛后复盘的 AI 游戏攻略黑科技走红,对局总结能力开挂。上传对局回放或者战绩截...
一分钟教你透视!购买的wpk辅... 很多人使用云端 AI 时,都担心购买的wpk辅助在哪里下载、内部资料上传带来隐私风险。这款本地运行的...
我来教教你辅助器!wepoke... 本地部署 AI 黑科技工具迎来新版本,不用上传文件到云端就能完成wepoker高级辅助解析、 AI ...
实测分享辅助器!德普之星辅助正... 您好,实测分享辅助器!德普之星辅助正版,WPK真的有挂下载(原本存在有辅助器)这款游戏可以开挂的,确...