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文件。

相关内容

热门资讯

玩家攻略!wepokerplu... 玩家攻略!wepokerplus开挂,wpk透视辅助下载,揭秘教程(有挂透视)关于wpk透视辅助下载...
记者发布!pokemmo脚本辅... 记者发布!pokemmo脚本辅助器下载,aapoker脚本怎么用,普及教程(有挂软件);实战中需综合...
分享开挂内幕!拱趴游戏破解器,... 1、分享开挂内幕!拱趴游戏破解器,pokemmo脚本辅助下载,线上教程(有挂辅助)。2、pokemm...
推荐十款!wepoker私人局... 您好,wepoker私人局辅助挂这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】...
玩家必看秘籍!hhpoker是... 玩家必看秘籍!hhpoker是内部控制吗,wepoker透视最简单三个步骤,黑科技教程(有挂技巧);...
发现一款!wepoker智能辅... 1、发现一款!wepoker智能辅助插件,wepoker辅助透视,扑克教程(有挂攻略)2、进入游戏-...
分享开挂内幕!aapoker如... 分享开挂内幕!aapoker如何设置胜率,wpk俱乐部辅助器,技巧教程(有挂软件)是由北京得aapo...
推荐十款!哈糖大菠萝怎么开挂,... 推荐十款!哈糖大菠萝怎么开挂,sohoopoker辅助,必备教程(有挂神器)科技教程也叫必备教程,这...
一分钟揭秘!德州透视插件,hh... 一分钟揭秘!德州透视插件,hhpoker一直输有挂吗,黑科技教程(有挂方法)是一款可以让一直输的玩家...
实测揭晓!wepoker安装教... 实测揭晓!wepoker安装教程,德州辅助工具到底怎么样,攻略方法(有挂辅助)准备好在德州辅助工具到...