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

相关内容

热门资讯

透视辅助"wepok... 透视辅助"wepoker网页版透视方法"详细辅助详细教程(起初真的有挂);建议优先通过wepoker...
终于发现!兴动互娱辅助脚本io... 终于发现!兴动互娱辅助脚本ios下载,佛手在线修改器(详细辅助解密教程)1、在兴动互娱辅助脚本ios...
透视有挂"拱趴大菠萝... 透视有挂"拱趴大菠萝有什么挂"详细辅助教你教程(往昔存在有挂)1、点击下载安装,微扑克wpk插件透视...
专业讨论!福建大玩家辅助透视,... 专业讨论!福建大玩家辅助透视,小程序游戏辅助必赢(详细辅助2025版教程);无聊就玩这款福建大玩家辅...
透视辅助"wepok... 《透视辅助"wepoker私人局俱乐部怎么进"详细辅助wpk教程(从来是有挂)》 wepoker私人...
重大推荐!多乐辅助器使用教程,... 重大推荐!多乐辅助器使用教程,大菠萝免费辅助器(详细辅助高科技教程)1、很好的工具软件,可以解锁游戏...
揭秘关于!温州茶苑手机版辅助器... 揭秘关于!温州茶苑手机版辅助器,心悦填大坑辅助器下载(详细辅助透牌教程)1、金币登录送、破产送、升级...
透视黑科技"德普之星... 1、透视黑科技"德普之星透视软件免费入口官网"详细辅助可靠教程(总是存在有挂)。2、德普之星透视软件...
让我来分享经验!潮汕掌上娱透视... 让我来分享经验!潮汕掌上娱透视怎么买,哈灵脚本微信小程序(详细辅助2025新版技巧)1、潮汕掌上娱透...
透视模拟器"hhpo... 1、透视模拟器"hhpoker真能买到挂吗"详细辅助高科技教程(果然是真的有挂)。2、hhpoker...