如果有多个视频需要拼接成一个视频,可以使用 TXVideoJoiner,可以将多个视频前后拼接成一个视频,也可以将多个视频画面叠加的形式进行拼接。
1. 基础拼接功能
1. 基础拼接功能
如果您只想将多个视频文件简单地前后拼接成一个视频文件,可以参见以下代码:
// 创建 TXVideoJoiner。TXPreviewParam为nil 表示这里不需要预览TXVideoJoiner* _videoJoin = [[TXVideoJoiner alloc] initWithPreview:nil];// 设置待拼接的视频文件组 _composeArray[_videoJoin setVideoPathList:_composeArray];// 设置回调,监听合并进度和合并完成事件_videoJoin.joinerDelegate = self;// 开始合并[_videoJoin joinVideo:VIDEO_COMPRESSED_540P videoOutputPath:_outFilePath]
2. 预览拼接文件
2. 预览拼接文件
如果您想在合并视频之前对要合并的视频进行预览,可以参见如下代码:
//准备预览 ViewTXPreviewParam *param = [[TXPreviewParam alloc] init];param.videoView = _videoPreview.renderView;param.renderMode = PREVIEW_RENDER_MODE_FILL_EDGE;// 创建 TXVideoJoiner 对象并设置预览 viewTXVideoJoiner* _videoJoin = [[TXVideoJoiner alloc] initWithPreview:param];_videoJoin.previewDelegate = _videoPreview;// 设置待拼接的视频文件组 _composeArray[_videoJoin setVideoPathList:_composeArray];// 开始预览[_videoJoin startPlay]
设置好预览 view 同时传入待合成的视频文件数组后,可以开始播放预览,合成模块提供了一组接口来做视频的播放预览:
startPlay
:表示视频播放开始。pausePlay
:表示视频播放暂停。resumePlay
:表示视频播放恢复。3. 视频合演
3. 视频合演
TXVideoJoiner 不仅仅支持将多个视频前后拼接起来,还可以将多个视频的画面合并在一起进行拼接,参见如下代码:
TXVideoJoiner* _videoJoin = [[TXVideoJoiner alloc] initWithPreview:nil];[_videoJoin setVideoPathList:_composeArray];_videoJoin.joinerDelegate = self;// 设置合演画面参数TXSplitScreenParams* splitScreenParams = [[TXSplitScreenParams alloc] init];splitScreenParams.canvasWidth = 720 * 2; // 合演时的画面宽度splitScreenParams.canvasHeight = 1280; // 合演时画面的高度// 每个视频在画面中的位置和大小splitScreenParams.rects = @[[NSValue valueWithCGRect:CGRectMake(0, 0, splitScreenParams.canvasWidth / 2,splitScreenParams.canvasHeight)],[NSValue valueWithCGRect:CGRectMake(splitScreenParams.canvasWidth / 2, 0,splitScreenParams.canvasWidth / 2, splitScreenParams.canvasHeight)]];splitScreenParams.durationMode = ALIGNS_TO_LONGEST; // // 指定合演视频的长度跟最长的视频一致[_videoJoiner setSplitScreenList:splitScreenParams];// 设置合演时,每个视频音频混合时的比重[_videoJoiner setVideoVolumes:@[@0, @1]];[_videoJoin joinVideo:VIDEO_COMPRESSED_540P videoOutputPath:_outFilePath]
当我们调用
setSplitScreenList
和setVideoVolumes
设置合演时的画面参数和声音混合大小之后,不仅仅对调用splitJoinVideo
生成视频生效,也对视频预览生效。