tencent cloud

All product documents
User Generated Short Video SDK
Last updated: 2025-04-01 17:14:09
Android
Last updated: 2025-04-01 17:14:09
The TXVideoJoiner can merge multiple videos either by sequentially concatenating them or by combining their frames in a split-screen layout.

1. Basic Video Concatenation

To simply concatenate multiple video files sequentially, refer to the following code:
mTXVideoJoiner = new TXVideoJoiner(mContext);

// Set the video source list. A return value < 0 indicates invalid or unsupported formats in the input files.
if (mTXVideoJoiner.setVideoPathList(videoSourceList) < 0) {
return;
}

// Set a listener to track concatenation progress and completion.
mTXVideoJoiner.setVideoJoinerListener(new TXVideoJoinerListener() {
@Override
public void onJoinProgress(float progress) {}

@Override
public void onJoinComplete(TXJoinerResult result) {}
});

// Start concatenation. Specify the output resolution and path.
// Note: If all input videos share the same format and resolution, concatenation is fast.
// Otherwise, re-encoding is required, which slows the process.
mTXVideoJoiner.joinVideo(TXVideoEditConstants.VIDEO_COMPRESSED_540P, mOutputPath);

2. Preview Before Concatenation

To preview the concatenated videos before merging, use the following code:
mTXVideoJoiner = new TXVideoJoiner(mContext);

// Set the video source list.
if (mTXVideoJoiner.setVideoPathList(videoSourceList) < 0) {
return;
}

// Set a listener for preview progress and completion.
mTXVideoJoiner.setTXVideoPreviewListener(new TXVideoPreviewListener() {
@Override
public void onPreviewProgress(int time) {}

@Override
public void onPreviewFinished() {}
});

// Prepare the preview view.
TXVideoEditConstants.TXPreviewParam param = new TXVideoEditConstants.TXPreviewParam();
param.videoView = mVideoView;
param.renderMode = TXVideoEditConstants.PREVIEW_RENDER_MODE_FILL_EDGE;
mTXVideoJoiner.initWithPreview(param);

// Start preview.
mTXVideoJoiner.startPlay();
Control playback with:
startPlay: Start preview
pausePlay: Pause preview
resumePlay: Resume preview

3. Split-Screen Video Merging

TXVideoJoiner also supports merging multiple videos into a split-screen layout. Example code:
mTXVideoJoiner = new TXVideoJoiner(mContext);

// Set the video source list.
if (mTXVideoJoiner.setVideoPathList(videoSourceList) < 0) {
return;
}

// Set a listener for split-screen merging progress and completion.
mTXVideoJoiner.setVideoJoinerListener(new TXVideoJoinerListener() {
@Override
public void onJoinProgress(float progress) {}

@Override
public void onJoinComplete(TXJoinerResult result) {}
});

// Configure split-screen layout parameters.
SplitScreenParam splitScreenParam = new SplitScreenParam();
splitScreenParam.canvasWidth = 720; // Canvas width during split-screen joining
splitScreenParam.canvasHeight = 1280; // Canvas height
splitScreenParam.durationControlMode = DurationControlMode.ALIGNS_TO_LONGEST; // Duration matches the longest video

// Define positions and sizes for each video on the canvas.
TXAbsoluteRect rect1 = new TXAbsoluteRect();
TXAbsoluteRect rect2 = new TXAbsoluteRect();
splitScreenParam.rects.add(rect1);
splitScreenParam.rects.add(rect2);
mTXVideoJoiner.setSplitScreenList(splitScreenParam);

// Set audio mixing weights for each video (e.g., video1: 100% volume, video2: 0%).
List<Float> volumes = new LinkedList<>();
volumes.add(1.0f);
volumes.add(0.0f);
mTXVideoJoiner.setVideoVolumes(volumes);

// Start split-screen merging.
// If input videos differ in format or resolution, re-encoding is required, which may slow the process.
mTXVideoJoiner.splitJoinVideo(TXVideoEditConstants.VIDEO_COMPRESSED_540P, mOutputPath);
When configuring split-screen layout parameters via setSplitScreenList and audio mixing ratios via setVideoVolumes, these settings apply to ​both the final video output (generated by splitJoinVideo) ​andthe live preview during editing.


Was this page helpful?
You can also Contact Sales or Submit a Ticket for help.
Yes
No

Feedback

Contact Us

Contact our sales team or business advisors to help your business.

Technical Support

Open a ticket if you're looking for further assistance. Our Ticket is 7x24 available.

7x24 Phone Support
Hong Kong, China
+852 800 906 020 (Toll Free)
United States
+1 844 606 0804 (Toll Free)
United Kingdom
+44 808 196 4551 (Toll Free)
Canada
+1 888 605 7930 (Toll Free)
Australia
+61 1300 986 386 (Toll Free)
EdgeOne hotline
+852 300 80699
More local hotlines coming soon