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

相关内容

热门资讯

透视挂!wpk透视辅助靠谱吗,... 透视挂!wpk透视辅助靠谱吗,wepoker数据分析(详细辅助德州论坛);1、wpk透视辅助靠谱吗透...
wepoke黑科技!poker... wepoke黑科技!poker辅助工具(透视)先前存在有挂(详细辅助新2025版),您好,wepok...
透视挂透视!德普之星辅助器ap... 透视挂透视!德普之星辅助器app,fishpoker透视底牌(详细辅助实用技巧);1、构建自己的德普...
wepoke ai辅助!微扑克... wepoke ai辅助!微扑克真的有挂存在吗(透视)总是真的有挂(详细辅助教你攻略)是一款可以让一直...
微扑克ai辅助工具!智星德州菠... 微扑克ai辅助工具!智星德州菠萝app下载(透视)原本真的有挂(详细辅助wpk教程)1、金币登录送、...
透视中牌率!hhpoker透视... 透视中牌率!hhpoker透视功能如何下载,拱趴大菠萝挂(详细辅助可靠教程)亲,关键说明,hhpok...
微扑克辅助软件!德扑之星怎么让... 微扑克辅助软件!德扑之星怎么让系统给好牌(透视)其实是有挂(详细辅助详细教程)1)微扑克辅助软件辅助...
透视黑科技!hhpoker辅助... 透视黑科技!hhpoker辅助软件,wepoker透视脚本免费(详细辅助安装教程);1、全新机制【w...
aapoker俱乐部!云扑克德... 您好,aapoker俱乐部这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩...
透视科技!智星德州菠萝插件官网... 透视科技!智星德州菠萝插件官网,wepoker脚本下载(详细辅助详细教程)1)智星德州菠萝插件官网辅...