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

相关内容

热门资讯

透视免费!大菠萝免费辅助器(透... 透视免费!大菠萝免费辅助器(透视)都是存在有挂(详细辅助安装教程)1、许多玩家不知道辅助软件怎么退出...
透视插件!拱趴大菠萝万能挂图解... 透视插件!拱趴大菠萝万能挂图解(透视)总是真的是有挂(详细辅助安装教程);辅助器中分为三种模型:软件...
透视ai代打!大菠萝免费辅助器... 透视ai代打!大菠萝免费辅助器(透视)其实是真的有挂(详细辅助2025新版总结)1、每一步都需要思考...
透视免费!wepoker公共底... 透视免费!wepoker公共底牌(透视)都是真的是有挂(详细辅助揭秘攻略)1、不需要AI权限,帮助你...
透视ai!德普辅助器辅助器怎么... 透视ai!德普辅助器辅助器怎么用(透视)一贯真的是有挂(详细辅助细节揭秘)1)辅助挂:进一步探索辅助...
玩家必备科技!德州hhpoke... 玩家必备科技!德州hhpoker是真的吗,hhpoker万能辅助器,靠谱教程(有挂教程)是一款可以让...
透视了解!pokemmo手机版... 透视了解!pokemmo手机版脚本免费(透视)真是真的有挂(详细辅助解说技巧);1、用户打开应用后不...
一分钟揭秘!pokemmo手机... 1、一分钟揭秘!pokemmo手机版脚本免费,wepoker私人局辅助,wpk教程(有挂透视);详细...
透视辅助!wepoker辅助是... 透视辅助!wepoker辅助是真的假的(透视)真是是真的有挂(详细辅助黑科技教程)1、透视辅助!we...
透视数据!cloudpoker... 透视数据!cloudpoker怎么开挂(透视)切实是真的有挂(详细辅助技巧教程)1、操作简单,无需注...