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透明挂,攻略方法(原先真的有挂)1、金币登录送、破产送、升级送、...
终于知道!wpk俱乐部盈利模式... 终于知道!wpk俱乐部盈利模式,wpk透明挂,详细教程(从来是有挂),您好,wpk俱乐部这款游戏可以...
玩家分享!wepoke有没有挂... 玩家分享!wepoke有没有挂,德州ai人工智能,攻略教程(一直是真的有挂)1、在德州ai人工智能a...
发现一款!德扑之星是什么机制,... 发现一款!德扑之星是什么机制,微扑克ai辅助工具,力荐教程(一贯真的有挂)微扑克ai辅助工具辅助器中...
秘笈分析!wopoker辅助v... 秘笈分析!wopoker辅助v3.0,aa扑克辅助,科技教程(一向真的有挂)是一款可以让一直输的玩家...
我来教大家!微扑克辅助多少钱,... 我来教大家!微扑克辅助多少钱,微扑克系统发牌规律,教你攻略(好像是有挂)是一款可以让一直输的玩家,快...
终于发现!德扑之星怎么查数据,... 终于发现!德扑之星怎么查数据,wpk透视辅助工具,新2025教程(好像是真的有挂);小薇(透视辅助)...
信息共享!wpk德州辅助器是真... 信息共享!wpk德州辅助器是真的是假,智星德州菠萝偷偷看牌功能,辅助教程(素来有挂)1、智星德州菠萝...
玩家实测!德扑之星系统有哪里规... 自定义微扑克wpk透视辅助系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,...
推荐攻略!智星德州菠萝外挂检测... 推荐攻略!智星德州菠萝外挂检测,微扑克ai辅助,2025教程(一贯存在有挂)是一款可以让一直输的玩家...