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

相关内容

热门资讯

2分钟细说!sohoo pok... 2分钟细说!sohoo poker辅助,hhpoker作弊码怎么用,总是有挂(有挂工具)1、公共底牌...
一分钟了解!wepoker免费... 一分钟了解!wepoker免费脚本咨询,拱趴大菠萝万能辅助器,其实存在有挂(有挂教学)1、完成wep...
重大科普!拱趴大菠萝挂怎么安装... 重大科普!拱趴大菠萝挂怎么安装,aapoker破解侠是真的吗,总是存在有挂(有挂方略)1、拱趴大菠萝...
玩家攻略!哈糖大菠萝软件下载,... 玩家攻略!哈糖大菠萝软件下载,we-poker辅助软件教程,一直是真的有挂(存在有挂)1、该软件可以...
一分钟了解!wepoker-h... 一分钟了解!wepoker-h5下载,aapoker俱乐部靠谱吗,都是存在有挂(有挂详情)1、下载好...
玩家必看教程!wepoker免... 玩家必看教程!wepoker免费透视脚本,wepoker辅助分析器,其实是真的有挂(有挂方针)1、w...
揭秘!hhpoker德州牛仔视... 揭秘!hhpoker德州牛仔视频,wepoker轻量版透视方法,切实存在有挂(今日头条)1、上手简单...
玩家必看科普!hhpoker德... 玩家必看科普!hhpoker德州挂真的有吗,wepoker俱乐部辅助,竟然有挂(竟然有挂)1、不需要...
如何分辨真伪!wepoker养... 如何分辨真伪!wepoker养号规律,wepoker透视脚本视频,原来存在有挂(有挂教学)1、辅助器...
总算明白!hhpoker怎么防... 总算明白!hhpoker怎么防作弊,hhpoker到底可以作弊码,真是真的有挂(有挂规律)1、很好的...