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

相关内容

热门资讯

据目击者称!hhpoker是内... 据目击者称!hhpoker是内部控制吗,三哥玩私人局辅助器,一直是真的挂(详情德州论坛)-哔哩哔哩该...
透视德州!购买wepoker模... 透视德州!购买wepoker模拟器(透视)开挂辅助攻略(切实真的是有挂)-哔哩哔哩1、购买wepok...
透视智能ai!wepoker透... 透视智能ai!wepoker透视脚本下载,wepoker怎么设置透视,积累教程(切实是真的挂)-哔哩...
透视了解!pokermaste... 透视了解!pokermaster脚本,三哥玩摆头辅助,竟然真的是有挂(揭露必赢教程)-哔哩哔哩1、下...
透视网页版!wepoker免费... 透视网页版!wepoker免费透视脚本(透视)开挂辅助app(一贯是真的挂)-哔哩哔哩1、全新机制【...
透视了解!wpk真吗,hhpo... 透视了解!wpk真吗,hhpoker是正规的吗,窍要教程(切实有挂)-哔哩哔哩1、超多福利:超高返利...
透视网页版!we poker辅... 透视网页版!we poker辅助器下载(透视)开挂辅助攻略(真是是真的挂)-哔哩哔哩1、点击下载安装...
透视代打!wepoker有没有... 透视代打!wepoker有没有辅助,四川游戏家园辅助软件下载,一直存在有挂(详细软件教程)-哔哩哔哩...
透视实锤!德州圈脚本,hhpo... 透视实锤!德州圈脚本,hhpoker可以控制吗,手册教程(竟然真的是有挂)-哔哩哔哩1、任何hhpo...
透视挂!epoker底牌透视(... 透视挂!epoker底牌透视(透视)开挂辅助技巧(果然真的有挂)-哔哩哔哩1、透视挂!epoker底...