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作弊,揭秘攻略(有挂透明);大神普及一款德州ai内幕,确定了拱...
科技介绍!德普之星辅助器怎么用... 科技介绍!德普之星辅助器怎么用,约局吧开挂,细节揭秘(有挂透明);原来确实真的有挂(需添加指定薇13...
一分钟秒懂!拱趴大菠萝挂怎么安... 一分钟秒懂!拱趴大菠萝挂怎么安装,约局吧德州透视,必胜教程(有挂方法)关于拱趴大菠萝挂怎么安装机制的...
终于清楚!红龙poker有辅助... 终于清楚!红龙poker有辅助吗,aapoker公共底牌,揭秘攻略(有挂技巧)是一款可以让一直输的玩...
一分钟快速了解!aa poke... 一分钟快速了解!aa poker辅助包,pokemmo辅助脚本,技巧教程(有挂技巧)1、玩家可以在p...
查到实测辅助!哈糖大菠萝可以开... 查到实测辅助!哈糖大菠萝可以开挂吗,约局吧游戏挂,微扑克教程(有挂透视);哈糖大菠萝可以开挂吗软件透...
一分钟教你!We poker辅... 一分钟教你!We poker辅助器下载,hhpoker有作弊的吗,曝光教程(有挂攻略)1、点击下载安...
终于清楚!hhpoker是正品... 终于清楚!hhpoker是正品吗,wepoker怎么设置房间,技巧教程(有挂辅助);1分钟了解详细教...
推荐攻略!aapoker怎么设... 推荐攻略!aapoker怎么设置抽水,pokemmo辅助器手机版下载,详细教程(有挂教程);致您一封...
实测分享!wepoker免费钻... 实测分享!wepoker免费钻石,约局吧游戏挂,必赢方法(有挂软件)关于wepoker免费钻石机制的...