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、很...
必备攻略!微乐小程序黑科技免费... 必备攻略!微乐小程序黑科技免费工具,微乐辅助工具哪个好用-确实是有辅助脚本(有挂教程)1、微乐小程序...
玩家科普!微乐小程序家乡自建房... 玩家科普!微乐小程序家乡自建房辅助app,微乐河南小程序微乐辅助脚本-总是有辅助工具(果真有挂)1、...
一分钟了解!微乐家乡麻将辅助,... 一分钟了解!微乐家乡麻将辅助,微乐家乡app下载-好像存在有辅助软件(有挂教程)进入游戏-大厅左侧-...
必知教程!微信微乐小程序辅助器... 必知教程!微信微乐小程序辅助器免费安装,广西微乐小程序脚本-其实真的有辅助教程(有挂规律)微信微乐小...
玩家必看分享!微信小程序微乐辅... 玩家必看分享!微信小程序微乐辅助器教程,微乐自建房免费脚本哪个最好用-确实是真的有辅助脚本(有挂助手...
科普分享!小程序微乐游戏辅助器... 科普分享!小程序微乐游戏辅助器,微乐广西麻辣辅助-果然有辅助神器(有挂头条)1、起透看视 小程序微乐...
查到实测!微信微乐小程序修改器... 查到实测!微信微乐小程序修改器,微乐自建房怎么提高运气-真是是真的有辅助器(了解有挂)1、首先打开微...
记者揭秘!微乐小程序微乐辅助软... 记者揭秘!微乐小程序微乐辅助软件,微乐小程序辅助脚本平台-一贯有辅助器(新版有挂)1、微乐小程序微乐...