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、任何佛手在线辅助器苹...
在玩家背景下!大唐辅助神器&q... 在玩家背景下!大唐辅助神器"解迷辅助神器"好像真的是有挂(哔哩哔哩)1、大唐辅助神器公共底牌简单,大...
近期!九九联盟辅助神器&quo... 近期!九九联盟辅助神器"详情辅助教程"切实是有挂(哔哩哔哩)1、超多福利:超高返利,海量正版游戏,九...
透视好友房!来玩app辅助工具... 透视好友房!来玩app辅助工具"开挂辅助工具"本来真的是有挂(哔哩哔哩)1、超多福利:超高返利,海量...
方法辅助挂!来玩app辅助器&... 方法辅助挂!来玩app辅助器"总结辅助方法"真是真的是有挂(哔哩哔哩)1)来玩app辅助器有没有挂:...
透视辅助!川南小闲辅助器&qu... 透视辅助!川南小闲辅助器"专业辅助插件"切实是真的有挂(哔哩哔哩);1、进入游戏-大厅左侧-新手福利...
2026版方法!微信小程序财神... 2026版方法!微信小程序财神十三张脚本"曝光辅助软件"都是是真的有挂(哔哩哔哩)进入游戏-大厅左侧...
第三方辅助挂!唐山撸麻雀德技巧... 第三方辅助挂!唐山撸麻雀德技巧"揭幕辅助工具"确实是真的有挂(哔哩哔哩)1、上手简单,内置详细流程视...
事发当天!宝宝浙江游戏脚本&q... 事发当天!宝宝浙江游戏脚本"教你辅助攻略"一直真的有挂(哔哩哔哩)1、首先打开宝宝浙江游戏脚本辅助器...
透视了解!微信小程序多乐辅助下... 透视了解!微信小程序多乐辅助下载"开挂辅助挂"切实真的有挂(哔哩哔哩)在进入微信小程序多乐辅助下载软...