public class TXUGCRecord extends java.lang.Object implements TXUGCPartsManager.IPartsManagerListener
Modifier and Type | Class and Description |
---|---|
static interface |
TXUGCRecord.VideoCustomProcessListener |
Modifier and Type | Field and Description |
---|---|
static float |
ENCODE_SPEED_FAST |
static float |
ENCODE_SPEED_FASTEST |
static float |
ENCODE_SPEED_SLOW |
static float |
ENCODE_SPEED_SLOWEST |
static float |
PLAY_SPEED_FAST |
static float |
PLAY_SPEED_FASTEST |
static float |
PLAY_SPEED_SLOW |
static float |
PLAY_SPEED_SLOWEST |
Modifier and Type | Method and Description |
---|---|
void |
didDetectFacePoints(float[] points) |
void |
didProcessFrame(byte[] data,
int width,
int height,
int format,
long timestamp) |
void |
didProcessFrame(int texture,
int width,
int height,
long timestamp) |
static TXUGCRecord |
getInstance(Context context)
获取录制实例
|
int |
getMaxZoom()
获取摄像头支持的最大焦距,此方法同时可以检查是否支持变焦
|
int |
getMusicDuration(java.lang.String path)
获取音乐文件时长.
|
TXUGCPartsManager |
getPartsManager() |
void |
onBufferProcess(byte[] nv21,
float[] matrix) |
void |
onDeleteAllParts() |
void |
onDeleteLastPart() |
void |
onEncodeFinished(long streamType,
long gopIndex,
long rpsFrameIndex) |
void |
onEncodeFormat(MediaFormat format) |
void |
onEncodeNAL(TXSNALPacket nal,
int errCode) |
void |
onNotifyEvent(int event,
Bundle param) |
void |
onRecordEncData(byte[] data,
long timestamp,
int sampleRate,
int channels,
int bits) |
void |
onRecordError(int errNo,
java.lang.String errInfo) |
void |
onRecordPcmData(byte[] data,
long timestamp,
int sampleRate,
int channels,
int bits) |
void |
onRecordRawPcmData(byte[] data,
long timestamp,
int sampleRate,
int channels,
int bits,
boolean withBgm) |
void |
onSurfaceTextureAvailable(SurfaceTexture surfaceTexture) |
void |
onSurfaceTextureDestroy(SurfaceTexture surfaceTexture) |
int |
onTextureProcess(int textureId,
float[] matrix) |
boolean |
pauseBGM()
暂停播放背景音乐 [精简版不支持]
|
int |
pauseRecord()
暂停视频录制
|
boolean |
playBGMFromTime(int startTime,
int endTime)
播放背景音乐.
|
void |
release()
释放资源
|
boolean |
resumeBGM()
继续播放背景音乐 [精简版不支持]
|
int |
resumeRecord()
继续视频录制
|
boolean |
seekBGM(int startTime,
int endTime)
定位BGM开始结束时间 [精简版不支持]
|
void |
setAspectRatio(int displayType)
设置宽高比
|
void |
setBeautyDepth(int style,
int beautyDepth,
int whiteningDepth,
int ruddyDepth)
设置美颜 和 美白 效果级别
|
void |
setBeautyStyle(int style)
设置美颜类型
|
int |
setBGM(java.lang.String path)
设置背景音乐文件 [精简版不支持]
|
void |
setBGMNofify(TXRecordCommon.ITXBGMNotify notify)
设置背景音乐播放回调接口.
|
boolean |
setBGMVolume(float x)
设置背景音乐的音量大小.
|
void |
setChinLevel(int scale)
设置下巴长度 [仅支持商业版Pro]
|
void |
setEyeScaleLevel(float eyeScaleLevel)
设置大眼效果 [仅支持商业版Pro]
|
void |
setFaceScaleLevel(float faceScaleLevel)
设置瘦脸效果 [仅支持商业版Pro]
|
void |
setFaceShortLevel(int level)
设置短脸 [仅支持商业版Pro]
|
void |
setFaceVLevel(int level)
设置V脸 [仅支持商业版Pro]
|
void |
setFilter(Bitmap filterImage)
setFilter 设置指定素材滤镜特效
|
void |
setFilter(Bitmap leftBitmap,
float leftIntensity,
Bitmap rightBitmap,
float rightIntensity,
float leftRadio)
setFilter 设置组合滤镜特效
|
void |
setFocusPosition(float eventX,
float eventY)
设置手动聚焦
|
void |
setGreenScreenFile(java.lang.String path,
boolean isLoop)
设置绿幕文件 [仅支持商业版Pro]
|
void |
setHomeOrientation(int homeOrientation)
设置home键方向
|
boolean |
setMicVolume(float x)
设置麦克风的音量大小.
|
void |
setMotionMute(boolean motionMute)
设置动效是否静音 [仅支持商业版和商业版Pro]
|
void |
setMotionTmpl(java.lang.String tmplPath)
setMotionTmpl 设置动效文件 [仅支持商业版和商业版Pro]
|
void |
setMute(boolean isMute) |
void |
setNoseSlimLevel(int scale)
设置小鼻效果 [仅支持商业版Pro]
|
void |
setRecordSpeed(int recordSpeed)
录制速度 [精简版不支持]
|
void |
setRenderRotation(int renderRotation)
设置渲染方向
|
void |
setReverb(int reverbType)
设置混响 [精简版不支持]
|
void |
setSpecialRatio(float specialRatio)
setSpecialRatio 设置滤镜效果程度
|
void |
setVideoBitrate(int bitrate) |
void |
setVideoProcessListener(TXUGCRecord.VideoCustomProcessListener listener)
设置自定义图像处理回调 [精简版不支持]
|
void |
setVideoRecordListener(TXRecordCommon.ITXVideoRecordListener listener)
设置录制回调接口
|
void |
setVideoRenderMode(int renderMode)
渲染模式TXRecordCommon:RENDER_MODE_FULL_FILL_SCREEN / RENDER_MODE_ADJUST_RESOLUTION
|
void |
setVideoResolution(int resolution)
单独设置分辨率
|
void |
setVoiceChangerType(int voiceChangerType)
设置变声 [精简版不支持]
|
void |
setWatermark(Bitmap watermarkBitmap,
TXVideoEditConstants.TXRect txRect)
设置全局水印 [精简版不支持]
|
boolean |
setZoom(int value)
设置焦距
|
void |
snapshot(TXRecordCommon.ITXSnapshotListener listener)
截图
|
int |
startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig config,
com.tencent.rtmp.ui.TXCloudVideoView previewView)
启动摄像头预览
|
int |
startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig config,
com.tencent.rtmp.ui.TXCloudVideoView previewView)
启动摄像头预览
|
int |
startRecord()
开始视频录制,SDK内部会自动生成视频路经和视频封面,在TXVideoRecordListener里面返回
|
int |
startRecord(java.lang.String videoFilePath,
java.lang.String coverPath)
开始视频录制
|
int |
startRecord(java.lang.String videoFilePath,
java.lang.String videoPartFolder,
java.lang.String coverPath)
开始视频录制
|
boolean |
stopBGM()
停止播放背景音乐.
|
void |
stopCameraPreview()
停止摄像头预览
|
int |
stopRecord()
停止视频录制
|
boolean |
switchCamera(boolean isFront)
切换前后摄像头
|
boolean |
toggleTorch(boolean enable)
toggleTorch, 打开闪关灯
|
int |
willAddWatermark(int texture,
int width,
int height) |
public static float ENCODE_SPEED_FAST
public static float ENCODE_SPEED_FASTEST
public static float ENCODE_SPEED_SLOW
public static float ENCODE_SPEED_SLOWEST
public static float PLAY_SPEED_FAST
public static float PLAY_SPEED_FASTEST
public static float PLAY_SPEED_SLOW
public static float PLAY_SPEED_SLOWEST
public void didDetectFacePoints(float[] points)
public void didProcessFrame(byte[] data, int width, int height, int format, long timestamp)
public void didProcessFrame(int texture, int width, int height, long timestamp)
public static TXUGCRecord getInstance(Context context)
context
- 用于系统api调用,内部会转成applicationContext,不会导致context泄露public int getMaxZoom()
public int getMusicDuration(java.lang.String path)
path
- 音乐文件路径
path == null 获取当前播放歌曲时长
path != null 获取path路径歌曲时长public TXUGCPartsManager getPartsManager()
public void onBufferProcess(byte[] nv21, float[] matrix)
public void onDeleteAllParts()
onDeleteAllParts
in interface TXUGCPartsManager.IPartsManagerListener
public void onDeleteLastPart()
onDeleteLastPart
in interface TXUGCPartsManager.IPartsManagerListener
public void onEncodeFinished(long streamType, long gopIndex, long rpsFrameIndex)
public void onEncodeFormat(MediaFormat format)
public void onEncodeNAL(TXSNALPacket nal, int errCode)
public void onNotifyEvent(int event, Bundle param)
public void onRecordEncData(byte[] data, long timestamp, int sampleRate, int channels, int bits)
public void onRecordError(int errNo, java.lang.String errInfo)
public void onRecordPcmData(byte[] data, long timestamp, int sampleRate, int channels, int bits)
public void onRecordRawPcmData(byte[] data, long timestamp, int sampleRate, int channels, int bits, boolean withBgm)
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture)
public void onSurfaceTextureDestroy(SurfaceTexture surfaceTexture)
public int onTextureProcess(int textureId, float[] matrix)
public boolean pauseBGM()
public int pauseRecord()
public boolean playBGMFromTime(int startTime, int endTime)
startTime
- 音乐播放起始时间 msendTime
- 音乐播放结束时间 mspublic void release()
public boolean resumeBGM()
public int resumeRecord()
public boolean seekBGM(int startTime, int endTime)
startTime
- 开始时间,单位msendTime
- 结束时间,单位mspublic void setAspectRatio(int displayType)
请在 startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig, TXCloudVideoView)
或者 startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig, TXCloudVideoView)
后调用
displayType
- TXRecordCommon.VIDEO_ASPECT_RATIO_9_16,VIDEO_ASPECT_RATIO_3_4,VIDEO_ASPECT_RATIO_1_1public void setBeautyDepth(int style, int beautyDepth, int whiteningDepth, int ruddyDepth)
请在 startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig, TXCloudVideoView)
或者 startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig, TXCloudVideoView)
后调用
设置的值会在调用stopCameraPreview()
后失效
style
- 美颜风格.三种美颜风格:0 :光滑 1:自然 2:朦胧beautyDepth
- : 美颜级别取值范围 0 ~ 9; 0 表示关闭 1 ~ 9值越大 效果越明显。whiteningDepth
- : 美白级别取值范围 0 ~ 9; 0 表示关闭 1 ~ 9值越大 效果越明显。ruddyDepth
- : 红润级别取值范围 0 ~ 9; 0 表示关闭 1 ~ 9值越大 效果越明显。public void setBeautyStyle(int style)
style
- public int setBGM(java.lang.String path)
开始录制(调用startRecord接口)之后不能切换背景音乐,可能会导致异常,如果需要切换音乐,请先停止视频录制(调用stopRecord接口)
path
- 音乐文件路径public void setBGMNofify(TXRecordCommon.ITXBGMNotify notify)
该接口用于混音处理,比如将背景音乐与麦克风采集到的声音混合后播放.
notify
- 回调借口,详细请参看TXRecordCommon.ITXBGMNotify
public boolean setBGMVolume(float x)
该接口用于混音处理,比如将背景音乐与麦克风采集到的声音混合后播放.
请在 playBGMFromTime(int, int)
后调用
x
- 音量大小,1为正常音量,建议值为0~2,如果需要调大背景音量可以设置更大的值.public void setChinLevel(int scale)
scale
- 长度级别public void setEyeScaleLevel(float eyeScaleLevel)
eyeScaleLevel
- 大眼级别.public void setFaceScaleLevel(float faceScaleLevel)
faceScaleLevel
- 瘦脸级别.public void setFaceShortLevel(int level)
level
- 短脸级别public void setFaceVLevel(int level)
level
- V脸级别public void setFilter(Bitmap filterImage)
请在 startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig, TXCloudVideoView)
或者 startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig, TXCloudVideoView)
后调用
设置的值会在调用stopCameraPreview()
后失效
filterImage
- : 指定素材,即颜色查找表图片。注意:一定要用png格式!!!
demo用到的滤镜查找表图片位于RTMPAndroidDemo/app/src/main/res/drawable-xxhdpi/目录下。public void setFilter(Bitmap leftBitmap, float leftIntensity, Bitmap rightBitmap, float rightIntensity, float leftRadio)
请在 startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig, TXCloudVideoView)
或者 startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig, TXCloudVideoView)
后调用
设置的值会在调用stopCameraPreview()
后失效
leftBitmap
- 左侧滤镜 注意:一定要用png格式!!leftIntensity
- 左侧滤镜程度rightBitmap
- 右侧滤镜 注意:一定要用png格式!!rightIntensity
- 右侧滤镜程度leftRadio
- 左侧图片占的比例大小public void setFocusPosition(float eventX, float eventY)
eventX
- 聚焦点的位置x值eventY
- 聚焦点的位置y值public void setGreenScreenFile(java.lang.String path, boolean isLoop)
目前图片支持jpg/png,视频支持mp4/3gp等Android系统支持的格式 API要求18
path
- :绿幕文件位置,支持两种方式:
1.资源文件放在assets目录,path直接取文件名
2.path取文件绝对路径isLoop
- :图片文件忽略,视频文件设置是否循环播放public void setHomeOrientation(int homeOrientation)
homeOrientation
- home方向取常量 TXLiveConstants.VIDEO_ANGLE_HOME_RIGHT
(home键在右)
TXLiveConstants.VIDEO_ANGLE_HOME_DOWN
(home键在下)
TXLiveConstants.VIDEO_ANGLE_HOME_LEFT
(home键在左)
TXLiveConstants.VIDEO_ANGLE_HOME_UP
(home键在上)public boolean setMicVolume(float x)
该接口用于混音处理,比如将背景音乐与麦克风采集到的声音混合后播放.
请在 playBGMFromTime(int, int)
后调用
x:
- 音量大小,1为正常音量,建议值为0~2,如果需要调大音量可以设置更大的值.public void setMotionMute(boolean motionMute)
motionMute
- true:静音;false:不静音public void setMotionTmpl(java.lang.String tmplPath)
请在 startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig, TXCloudVideoView)
或者 startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig, TXCloudVideoView)
后调用
tmplPath
- 文件路径: 空String ""则取消动效public void setMute(boolean isMute)
public void setNoseSlimLevel(int scale)
scale
- 小鼻级别public void setRecordSpeed(int recordSpeed)
recordSpeed
- TXRecordCommon.RECORD_SPEED_SLOWEST
(极慢速)
TXRecordCommon.RECORD_SPEED_SLOW
(慢速)
TXRecordCommon.RECORD_SPEED_NORMAL
(标准)
TXRecordCommon.RECORD_SPEED_FAST
(快速)
TXRecordCommon.RECORD_SPEED_FASTEST
(极快速)public void setRenderRotation(int renderRotation)
renderRotation
- 渲染方向取常量 TXLiveConstants.RENDER_ROTATION_0
(常规竖屏)
TXLiveConstants.RENDER_ROTATION_90
(左旋90度)
TXLiveConstants.RENDER_ROTATION_180
(左旋180度)
TXLiveConstants.RENDER_ROTATION_270
(左旋270度)public void setReverb(int reverbType)
reverbType
- TXRecordCommon.VIDOE_REVERB_TYPE_0
(关闭混响)
TXRecordCommon.VIDOE_REVERB_TYPE_1
(KTV)
TXRecordCommon.VIDOE_REVERB_TYPE_2
(小房间)
TXRecordCommon.VIDOE_REVERB_TYPE_3
(大会堂)
TXRecordCommon.VIDOE_REVERB_TYPE_4
(低沉)
TXRecordCommon.VIDOE_REVERB_TYPE_5
(洪亮)
TXRecordCommon.VIDOE_REVERB_TYPE_6
(金属声)
TXRecordCommon.VIDOE_REVERB_TYPE_7
(磁性)public void setSpecialRatio(float specialRatio)
请在 startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig, TXCloudVideoView)
或者 startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig, TXCloudVideoView)
后调用
设置的值会在调用stopCameraPreview()
后失效
specialRatio
- : 从0到1,越大滤镜效果越明显,默认取值0.5public void setVideoBitrate(int bitrate)
bitrate
- public void setVideoProcessListener(TXUGCRecord.VideoCustomProcessListener listener)
请在 startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig, TXCloudVideoView)
或者 startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig, TXCloudVideoView)
后调用
listener
- public void setVideoRecordListener(TXRecordCommon.ITXVideoRecordListener listener)
listener
- 录制结果回调接口public void setVideoRenderMode(int renderMode)
在视频比例9:16时的渲染模式,RENDER_MODE_FULL_FILL_SCREEN:将图像等比例铺满整个屏幕,多余部分裁剪掉,此模式下画面不留黑边
RENDER_MODE_ADJUST_RESOLUTION:将图像等比例缩放,缩放后的宽和高都不会超过显示区域,居中显示
renderMode
- public void setVideoResolution(int resolution)
请在 startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig, TXCloudVideoView)
或者 startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig, TXCloudVideoView)
后调用并且开始录制后不要调用,调用后摄像头会重启
resolution
- TXRecordCommon.VIDEO_RESOLUTION_xxxpublic void setVoiceChangerType(int voiceChangerType)
voiceChangerType
- TXRecordCommon.VIDOE_VOICECHANGER_TYPE_0
(关闭变声)
TXRecordCommon.VIDOE_VOICECHANGER_TYPE_1
(熊孩子)
TXRecordCommon.VIDOE_VOICECHANGER_TYPE_2
(萝莉)
TXRecordCommon.VIDOE_VOICECHANGER_TYPE_3
(大叔)
TXRecordCommon.VIDOE_VOICECHANGER_TYPE_4
(重金属)
TXRecordCommon.VIDOE_VOICECHANGER_TYPE_6
(外国人)
TXRecordCommon.VIDOE_VOICECHANGER_TYPE_7
(困兽)
TXRecordCommon.VIDOE_VOICECHANGER_TYPE_8
(死肥仔)
TXRecordCommon.VIDOE_VOICECHANGER_TYPE_9
(强电流)
TXRecordCommon.VIDOE_VOICECHANGER_TYPE_10
(重机械)
TXRecordCommon.VIDOE_VOICECHANGER_TYPE_11
(空灵)public void setWatermark(Bitmap watermarkBitmap, TXVideoEditConstants.TXRect txRect)
TXRect-水印相对于视频图像的归一化值,sdk内部会根据水印宽高比自动计算height 比如视频图像大小为(540,960) TXRect三个参数设置为0.1,0.1,0.1,水印的实际像素坐标为(540 * 0.1,960 * 0.1,540 * 0.1 ,540 * 0.1 * watermarkBitmap.height / watermarkBitmap.width)
watermarkBitmap
- 全局水印图片txRect
- 归一化坐标public boolean setZoom(int value)
value
- 焦距,取值 0~getMaxZoom();public void snapshot(TXRecordCommon.ITXSnapshotListener listener)
listener
- void onSnapshot(Bitmap bmp)public int startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig config, com.tencent.rtmp.ui.TXCloudVideoView previewView)
config
- 自定义预览参数,详细请参看TXRecordCommon.TXUGCCustomConfig
videoBitrate建议值600-12000(SDK上限不再做限制);videoFps范围15-30;videoGop范围1-10spreviewView
- 预览视频的渲染view.public int startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig config, com.tencent.rtmp.ui.TXCloudVideoView previewView)
config
- 简化预览参数,详细请参看TXRecordCommon.TXUGCSimpleConfig
previewView
- 预览视频的渲染view.public int startRecord()
注意:这个接口SDK会自动管理生成的视频和封面,在下次调用startRecord的时候,SDK会自动删除上一次生成的视频和封面
请在 startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig, TXCloudVideoView)
或者 startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig, TXCloudVideoView)
后调用
public int startRecord(java.lang.String videoFilePath, java.lang.String coverPath)
请在 startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig, TXCloudVideoView)
或者 startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig, TXCloudVideoView)
后调用
注意:这个接口客户需要自己管理生成的视频和封面,在不需要视频的时候自行删除
videoFilePath
- 视频文件全路径,调用者保证该路径能正常生成文件coverPath
- 视频封面截图,为空表示不需要生成视频封面public int startRecord(java.lang.String videoFilePath, java.lang.String videoPartFolder, java.lang.String coverPath)
请在 startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig, TXCloudVideoView)
或者 startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig, TXCloudVideoView)
后调用
注意:这个接口客户需要自己管理生成的视频和封面,在不需要视频的时候自行删除
videoFilePath
- 视频文件全路径,调用者保证该路径能正常生成文件videoPartFolder
- 视频分段录制的文件存储目录,如果此参数为null,则使用/sdcard/TXUGC/TXUGCParts这个默认路径coverPath
- 视频封面截图,为空表示不需要生成视频封面public boolean stopBGM()
该接口用于混音处理,比如将背景音乐与麦克风采集到的声音混合后播放.
public void stopCameraPreview()
public int stopRecord()
请在 startRecord()
后调用
public boolean switchCamera(boolean isFront)
请在 startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig, TXCloudVideoView)
或者 startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig, TXCloudVideoView)
后调用
设置的值会在调用stopCameraPreview()
后失效
isFront
- 是否前置摄像头public boolean toggleTorch(boolean enable)
请在 startCameraSimplePreview(TXRecordCommon.TXUGCSimpleConfig, TXCloudVideoView)
或者 startCameraCustomPreview(TXRecordCommon.TXUGCCustomConfig, TXCloudVideoView)
后调用
设置的值会在调用stopCameraPreview()
后失效
enable
- true, 打开,false, 关闭.public int willAddWatermark(int texture, int width, int height)