// 自定义配置TXRecordCommon.TXUGCCustomConfig customConfig = new TXRecordCommon.TXUGCCustomConfig();customConfig.videoResolution = TXRecordCommon.VIDEO_RESOLUTION_540_960;customConfig.minDuration = mMinDuration; // 最小时长customConfig.maxDuration = mMaxDuration; // 最大时长customConfig.videoBitrate = mBiteRate; // 视频码率customConfig.videoGop = mGop; // GOP 大小customConfig.videoFps = mFps; // FPScustomConfig.isFront = mFront; // 是否前置摄像头mTXCameraRecord.startCameraCustomPreview(customConfig, mVideoView);
// 录制前mTXCameraRecord = TXUGCRecord.getInstance(this.getApplicationContext());mTXCameraRecord.setVideoRecordListener(this);...// 结束录制mTXCameraRecord.stopRecord();
@Overridepublic void onRecordComplete(TXRecordCommon.TXRecordResult result) {TXCLog.i(TAG, "onRecordComplete, result retCode = " + result.retCode + ", descMsg = " + result.descMsg + ", videoPath + " + result.videoPath + ", coverPath = " + result.coverPath);if (mTXRecordResult.retCode < 0) {Toast.makeText(TCVideoRecordActivity.this.getApplicationContext(), "录制失败,原因:" + mTXRecordResult.descMsg, Toast.LENGTH_SHORT).show();} else {mDuration = mTXCameraRecord.getPartsManager().getDuration(); //录制的总时长if (mTXCameraRecord != null) {mTXCameraRecord.getPartsManager().deleteAllParts(); //删除多次录制的分片文件}startPreview(); //进去预览界面}
TXRecordCommon.TXUGCSimpleConfig simpleConfig = new TXRecordCommon.TXUGCSimpleConfig();simpleConfig.videoQuality = TXRecordCommon.VIDEO_QUALITY_MEDIUM;simpleConfig.minDuration = mMinDuration;simpleConfig.maxDuration = mMaxDuration;// 1、首先开启预览mTXCameraRecord.startCameraSimplePreview(simpleConfig, mVideoView);// 2、再设置背景音乐的路径并播放背景音乐mBGMDuration = mTXCameraRecord.setBGM(mBGMPath);mTXCameraRecord.playBGMFromTime(0, mBGMDuration);// 3、启动录制(customVideoPath:录制后视频路径,customPartFolder:录制视频的文件夹,customCoverPath:录制后视频的封面路径)int result = mTXCameraRecord.startRecord(customVideoPath, customPartFolder, customCoverPath);
private void snapshot() {if (mTXCameraRecord != null) {mTXCameraRecord.snapshot(new TXRecordCommon.ITXSnapshotListener() {@Overridepublic void onSnapshot(Bitmap bmp) {// 拍照的图片saveBitmap(bmp);}});}}
定义 | TXRecordCommon 中对应常量 | 倍数 |
极慢速 | RECORD_SPEED_SLOWEST | 0.5倍 |
慢速 | RECORD_SPEED_SLOW | 0.8倍 |
标准 | RECORD_SPEED_NORMAL | 1倍 |
快速 | RECORD_SPEED_FAST | 1.25倍 |
极快速 | RECORD_SPEED_FASTEST | 1.5倍 |
mTXCameraRecord.setRecordSpeed(TXRecordCommon.RECORD_SPEED_FAST);
分辨率 | TXVideoEditConstants 中对应常量 |
360x640 | VIDEO_COMPRESSED_360P |
480x640 | VIDEO_COMPRESSED_480P |
540x960 | VIDEO_COMPRESSED_540P |
720x1280 | VIDEO_COMPRESSED_720P |
1080x1920 | VIDEO_COMPRESSED_1080P |
//设置输出视频码率mTXVideoEditer.setVideoBitrate(3600);//设置输出分辨率mTXVideoEditer.generateVideo(TXVideoEditConstants.VIDEO_COMPRESSED_720P, mVideoOutputPath);
// 设置视频原声音量大小(设为0,去掉录制的 BGM)mTXVideoEditer.setVideoVolume(0.0f);// 设置本地的背景音乐路径String bgmPath = getBGMPath();mTXVideoEditer.setBGM(bgmPath);// 设置背景音乐音量大小,范围0.0f-1.0fmTXVideoEditer.setBGMVolume(1.0f);
// 停止播放mTXVideoEditer.stopPlay();if (isFullScreen) {// 如果是全屏模式,则下面切换成窗口模式FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1500);mVideoPlayerLayout.setLayoutParams(params);initPlayerLayout(false);isFullScreen = false;} else {// 如果是窗口模式,则下面切换成全屏模式FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);mVideoPlayerLayout.setLayoutParams(params);initPlayerLayout(false);isFullScreen = true;}// 开始播放mTXVideoEditer.startPlayFromTime(startTime, endTime);// 重新设置预览Viewprivate void initPlayerLayout(boolean isFullScreen) {TXVideoEditConstants.TXPreviewParam param = new TXVideoEditConstants.TXPreviewParam();param.videoView = mVideoPlayerLayout;if (isFullScreen) {param.renderMode = TXVideoEditConstants.PREVIEW_RENDER_MODE_FILL_SCREEN;} else {param.renderMode = TXVideoEditConstants.PREVIEW_RENDER_MODE_FILL_EDGE;}mTXVideoEditer.initWithPreview(param);}
//裁剪页面mTXVideoEditer = new TXVideoEditer(mContext);mTXVideoEditer.setCutFromTime(mTCVideoEditView.getSegmentFrom(), mTCVideoEditView.getSegmentTo());mTXVideoEditer.processVideo();// 将裁剪设置成整个时长 (setCutTimeFrom)mTXVideoEditer.setCutFromTime(0, mVideoDuration);//跳转到特效页面,进行生成mTXVideoEditer.generateVideo(TXVideoEditConstants.VIDEO_COMPRESSED_720P, mVideoOutputPath);


app的 build.gradle 中指定 abiFilters 为“armeabi”。app的 build.gradle 中的 aar 引用,是否与您放入工程下 /libs 目录下的 aar 文件名称是否一致。然后重新 clean 并且 build 一下您的工程。文档反馈