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

相关内容

热门资讯

3分钟了解!湖南牵手胡子跑改脚... 3分钟了解!湖南牵手胡子跑改脚本,微友辅助神器下载(原来有挂)-哔哩哔哩1)湖南牵手胡子跑改脚本辅助...
5分钟详细!微乐广西小程序脚本... 5分钟详细!微乐广西小程序脚本,决战卡五星辅助看牌器(竟然真的是有挂)-哔哩哔哩决战卡五星辅助看牌器...
第6分钟专业!新海豚辅助工具,... 第6分钟专业!新海豚辅助工具,决战手游辅助(竟然真的是有挂)-哔哩哔哩1、下载好新海豚辅助工具辅助软...
九分钟必备!微信呢小程序辅助器... 九分钟必备!微信呢小程序辅助器脚本,赣牌圈有挂吗(果然是有挂)-哔哩哔哩运微信呢小程序辅助器脚本辅助...
第6分钟解密!皇豪互众插件,随... 第6分钟解密!皇豪互众插件,随意玩辅助软件(确实有挂)-哔哩哔哩1、完成随意玩辅助软件透视辅助安装,...
六分钟普及!新西部辅助外卦,衢... 六分钟普及!新西部辅助外卦,衢州都莱辅助器下载(原来真的有挂)-哔哩哔哩衢州都莱辅助器下载辅助器中分...
第5分钟解迷!透视辅助功能插件... 第5分钟解迷!透视辅助功能插件下载,新漫游正版辅助软件(其实真的有挂)-哔哩哔哩1、透视辅助功能插件...
六分钟关于!四川途游辅助软件,... 六分钟关于!四川途游辅助软件,新518互游插件下载(好像真的是有挂)-哔哩哔哩1、四川途游辅助软件机...
第6分钟详情!指尖四川辅助脚本... 第6分钟详情!指尖四川辅助脚本苹果版,宁夏划水辅助(一直是真的挂)-哔哩哔哩1、上手简单,内置详细流...
第7分钟分享!wepoker辅... 第7分钟分享!wepoker辅助工具,雀友会广东潮汕辅助(原来是有挂)-哔哩哔哩1、雀友会广东潮汕辅...