短视频 SDK Android(视频拼接)

如果有多个视频需要拼接成一个视频,可以使用 TXVideoJoiner,可以将多个视频前后拼接成一个视频,也可以将多个视频画面叠加的形式进行拼接。

相关产品
短视频 SDK 产品页,含版本规格、价格与购买入口。

一、1. 基础拼接功能

如果你只想将多个视频文件简单地前后拼接成一个视频文件,可以参见以下代码:

mTXVideoJoiner = new TXVideoJoiner(mContext);// 设置视频源,返回值 < 0 表示原始文件中有错误或者格式不支持if (mTXVideoJoiner.setVideoPathList(videoSourceList) < 0) { return }// 设置回调,监听合并进度和合并完成事件mTXVideoJoiner.setVideoJoinerListener(new TXVideoJoinerListener() { @Override public void onJoinProgress(float progress) {} @Override public void onJoinComplete(TXJoinerResult result) {}});// 开始合并。参数传递合并视频的分辨率以及输出路径。// 如果合并的多个文件格式和分辨率一致,可以快速完成视频的合并,如果格式和分辨率不一致,则需要重新编码,合并速度会比较慢mTXVideoJoiner.joinVideo(TXVideoEditConstants.VIDEO_COMPRESSED_540P, mOutputPath);

二、2. 预览拼接文件

如果你想在合并视频之前对要合并的视频进行预览,可以参见如下代码:

mTXVideoJoiner = new TXVideoJoiner(mContext);// 设置视频源,返回值 < 0 表示原始文件中有错误或者格式不支持if (mTXVideoJoiner.setVideoPathList(videoSourceList) < 0) { return }// 设置回调,监听预览进度和预览完成事件mTXVideoJoiner.setTXVideoPreviewListener(new TXVideoPreviewListener() { @Override public void onPreviewProgress(int time) {} @Override public void onPreviewFinished() {}});//准备预览View TXVideoEditConstants.TXPreviewParam param = new TXVideoEditConstants.TXPreviewParam();param.videoView = mVideoView;param.renderMode = TXVideoEditConstants.PREVIEW_RENDER_MODE_FILL_EDGE;mTXVideoJoiner.initWithPreview(param);// 开始预览mTXVideoJoiner.startPlay();

合成模块提供了一组接口来做视频的播放预览:

·startPlay:表示视频播放开始。

·pausePlay:表示视频播放暂停。

·resumePlay:表示视频播放恢复。

三、3. 视频合演

TXVideoJoiner 不仅仅支持将多个视频前后拼接起来,还可以将多个视频的画面合并在一起进行拼接,参见如下代码:

mTXVideoJoiner = new TXVideoJoiner(mContext);// 设置视频源,返回值 < 0 表示原始文件中有错误或者格式不支持if (mTXVideoJoiner.setVideoPathList(videoSourceList) < 0) { return }// 设置回调,监听合并进度和合并完成事件mTXVideoJoiner.setVideoJoinerListener(new TXVideoJoinerListener() { @Override public void onJoinProgress(float progress) {} @Override public void onJoinComplete(TXJoinerResult result) {}});// 设置合演画面参数SplitScreenParam splitScreenParam = new SplitScreenParam();splitScreenParam.canvasWidth = 720; // 合演时的画面宽度splitScreenParam.canvasHeight = 1280; // 合演时画面的高度splitScreenParam.durationControlMode = DurationControlMode.ALIGNS_TO_LONGEST; // 指定合演视频的长度跟最长的视频一致// 用于指定每个视频在画面中的位置和大小TXAbsoluteRect rect1 = new TXAbsoluteRect();TXAbsoluteRect rect2 = new TXAbsoluteRect();splitScreenParam.rects.add(rect1);splitScreenParam.rects.add(rect2);mTXVideoJoiner.setSplitScreenList(splitScreenParam);// 设置合演时,每个视频音频混合时的比重List<Float> volumes = new LinkedList<>();volumes.add(1.0f);volumes.add(0.0f);mTXVideoJoiner.setVideoVolumes(volumes);// 开始合并。参数传递合并视频的分辨率以及输出路径。// 如果合并的多个文件格式和分辨率一致,可以快速完成视频的合并,如果格式和分辨率不一致,则需要重新编码,合并速度会比较慢mTXVideoJoiner.splitJoinVideo(TXVideoEditConstants.VIDEO_COMPRESSED_540P, mOutputPath);

当我们调用setSplitScreenList和setVideoVolumes设置合演时的画面参数和声音混合大小之后,不仅仅对调用splitJoinVideo生成视频生效,也对视频预览生效。

赞 (0)
上一篇 4天前
下一篇 4天前