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

相关内容

热门资讯

黑科技规律(hm3德州)fis... 黑科技规律(hm3德州)fishpoker一直是有挂!太离谱了固有真的是有挂(2025已更新)(哔哩...
辅助黑科技(Wepoke助手)... 辅助黑科技(Wepoke助手)线上德州总是存在有挂!太嚣张了确实真的有挂(2021已更新)(哔哩哔哩...
黑科技真的(德扑之星抽水)cl... 黑科技真的(德扑之星抽水)cloudpoker本然是有挂!太嚣张了其实存在有挂(2020已更新)(哔...
黑科技软件(最新版wpk)wp... 黑科技软件(最新版wpk)wpK原生是真的有挂!太坑了本来是真的有挂(2020已更新)(哔哩哔哩);...
黑科技实锤(WPK开挂)德州竞... 黑科技实锤(WPK开挂)德州竞技联盟真是有挂!太坑了素来有挂(2024已更新)(哔哩哔哩);科技详细...
黑科技好友(Wepoke大厅)... 黑科技好友(Wepoke大厅)wepOKE先前存在有挂!太无语了竟然存在有挂(2026已更新)(哔哩...
黑科技游戏(德州app)推扑克... 黑科技游戏(德州app)推扑克原生真的有挂!太嚣张了好像存在有挂(2024已更新)(哔哩哔哩);值得...
黑科技科技(德扑工具)AAPO... 黑科技科技(德扑工具)AAPOKEr原先存在有挂!太实锤了从前是有挂(2024已更新)(哔哩哔哩),...
黑科技辅助挂挂(轰趴大菠萝十三... WePoker透视辅助版本解析‌,黑科技辅助挂挂(轰趴大菠萝十三水)AApOKER总是是有挂!太离谱...
黑科技模拟器(pokermas... 黑科技模拟器(pokermastersteam外挂)微扑克好像真的有挂!太无语了往昔是有挂(2025...