-
Notifications
You must be signed in to change notification settings - Fork 53
Recorder_Config_Params
KSYMediaEditorKit提供KSYRecordKit来提供录制的相关功能
初始化参数设置方式为:
KSYRecordKit类的setXXX接口
- 录制文件路径
- 编码类型,默认ENCODE_METHOD_SOFTWAR(软编模式)
- 视频编码格式,默认AVConst.CODEC_ID_AVC
- 预览分辨率,默认VIDEO_RESOLUTION_360P
- 录制分辨率,默认VIDEO_RESOLUTION_360P
- 最大关键帧间隔,默认值3.0
- 音频编码参数
- 横竖屏设置,默认竖屏
2.1 录制路径
录制的本地文件路径
例如:/sdcard/ksy_sv_rec_test/test.mp4
设置接口:startRecord,在录制开始时直接设置即可
2.2 编码类型
- 软编模式:ENCODE_METHOD_SOFTWARE
支持所有GPU滤镜,cpu占用较高,支持4.4及以上系统,相对硬编有更好的机型兼容性,而且相同码率下有更好的视频质量。
该模式下如果设置了比较高的编码参数(比如720p分辨率),长时间录制可能会导致手机发热严重,帧率下降等问题。
如4.4以下的系统设置了该编码模式,则系统会自动fallback至软编兼容模式。 - 硬编模式:ENCODE_METHOD_HARDWARE
支持所有GPU滤镜,cpu占用最低,支持4.3及以上系统。
该模式下录制,功耗最低,不过相对于软编,同码率下的画面质量差很多, 而且在某些机型上可能会导致应用crash,不建议全部设置成硬编, 可以通过测试过的硬编白名单来设置。
如4.3以下的系统设置了该编码模式,则系统会自动fallback至软编兼容模式。 - 软编兼容模式:ENCODE_METHOD_SOFTWARE_COMPAT
setEncodeMethod,该接口在录制过程中设置会抛异常IllegalStateException
2.3 视频编码格式
可通过 setVideoCodecId(int) 接口设置。可取值有:
- AVConst.CODEC_ID_AVC 使用H264编码
- AVConst.CODEC_ID_HEVC 使用H265编码
该属性与软硬编设置是独立的,如果设置为硬编264模式,而机型不支持的话,会fallback到264软编模式。
2.4 预览分辨率
设置方法有以下两种:
- 固定分辨率设置:setPreviewResolution(int)
定义的分辨率指明了录制分辨率短边的长度,长边会根据录制设置的预览View尺寸比例计算(不包括navigation bar的高度)
此种方式支持以下四种type
type |
---|
VIDEO_RESOLUTION_360P |
VIDEO_RESOLUTION_480P |
VIDEO_RESOLUTION_540P |
VIDEO_RESOLUTION_720P |
该接口在录制过程中设置无效,设置会在下一次startCameraPreview时生效
2.5 录制分辨率
支持以下两种方式设置:
- 固定分辨率设置:setTargetResolution(int)
定义的分辨率指明了录制分辨率短边的长度,长边会根据录制设置的预览View尺寸比例计算(不包括navigation bar的高度)
此种方式支持以下四种type
type |
---|
VIDEO_RESOLUTION_360P |
VIDEO_RESOLUTION_480P |
VIDEO_RESOLUTION_540P |
VIDEO_RESOLUTION_720P |
该接口在录制过程中设置无效,设置只在下一次调用startRecord时生效
接口在录制过程中设置,只能在下一次调用startRecord时生效
setXXXKBitrate型接口的码率单位为kbps, setXXXBitrate型接口的码率单位为bps
码率的设置都需要跟分辨率以及应用场景相关。大致的选择规律如下:
- 分辨率越高,需要的码率越高。
- 视频场景越复杂,运动越剧烈,需要的码率也越高。
硬编模式下,不同机型的编码质量差异较大,还请自行斟酌。
软编模式下录制分辨率及码率推荐值可对应下表(帧率统一为15fps):
分辨率 | 推荐码率 |
---|---|
360p | 400 |
480p | 600 |
540p | 700 |
720p | 1000 |
2.8 最大关键帧间隔
最大关键帧间隔,一般说的GOP长度。每一个关键帧表示随机访问的点,但是关键帧的大小比非关键帧大很多。
关键帧间隔越小,表示关键帧越多,但是压缩率也会越低,请合理选择。
默认值为 3秒。实际生效方式为 3* videoFPS。 比如15帧每秒,则每45帧有一个关键帧。
接口在录制过程中设置,只能在下一次调用startRecord时生效
2.9 音频编码参数
支持设置音频ChannelNumber,可选值为1(单声道)或2(双声道),默认是1.
参见: setAudioChannels(int)
建议在开启背景音乐录制时设置为双声道(立体声)。
2.10 横竖屏设置
设置横竖屏代表预览画面需要旋转的角度,对于横屏,需要旋转90或者270度,对于竖屏需要旋转0或者180度
Demo中只演示了竖屏录制UI,您可通过此接口适配横屏录制
- 通过接口setRotateDegrees 参考代码
mRecordKit.setRotateDegrees(mIsLandscape ? 90 : 0);
KSYRecordKit中配置方法继承自KSYStreamer,javadoc 参考KSYStreamer
方法 | 功能 | 推荐值 |
---|---|---|
setAudioSampleRate | 设置音频采样率 | 44100 Hz |
setPreviewFps | 设置预览编码帧率 | 15 fps |
setTargetFps | 设置录制编码帧率 | 15 fps |
setVideoBitrate(int initbitrate) | 设置初始视频码率 | 500 kbps |
setAudioBitrate | 设置音频编码码率 | 48 kbps |
setPreviewResolution | 设置预览分辨率 | VIDEO_RESOLUTION_480P |
setTargetResolution | 设置录制分辨率 | VIDEO_RESOLUTION_480P |
setIFrameInterval | 设置视频编码时的I帧间隔,单位为秒,float型 | 默认值为 3秒。实际生效方式为 3* videoFPS。 比如15帧每秒,则每45帧有一个关键帧。 |
setRotateDegrees | 旋转角度 | 横屏:90/270;竖屏:0/180 |
setEncodeMethod | 编码方式 | ENCODE_METHOD_SOFTWARE |
setFrontCameraMirror | 设置开启前置摄像头镜像 | 默认关闭 |
- 美颜切换:
参考Demo中initBeautyUI函数中onItemSelected; - 美声及其它音频滤镜切换:
参考Demo中addAudioFilter函数; - 背景音切换:
参考Demo中onBgmItemClick函数; - 水印切换:
参考demo中onWaterMarkChecked函数 - 镜像切换:
参考demo中onFrontMirrorChecked函数 - 摄像头切换(不受时间限制):
参考demo中onSwitchCamera函数 - 动态贴纸切换:
参考demo中onStickerChecked函数 - 背景音变调切换: 参考demo中onPitchClick函数