接口速查

Session相关接口

实时录制LiveCaptureSession类

接口名 描述
void setupDevice() 初始化Device
void setSurfaceHolder(SurfaceHolder surfaceHolder) 绑定用于本地预览的SurfaceHolder
void configMp4Muxer(String localMp4Path) 设置mp4存储路径
void destroyMp4Muxer() 销毁mp4封装器
void configBackgroundMusic(boolean enableBGM, String bgmPath, boolean isLooping) 设置背景乐路径及是否循环
void configBackgroundMusicClip(long clipStartInUSec, long clipDurationInUSec) 设置背景乐区间,单位微妙,第二个参数为指定的区间长度并非结束时间
void start() 启动录制
void pause() 暂停录制
void resume() 恢复录制
void stop() 停止录制
void release() 释放计算资源
Bitmap getScreenShot() 获取截图
void setGPUImageFilters(List filters) 设置滤镜List
void setRecordTrackGain(float gain) 设置录音增益,[0f, 1f]
void setBGMTrackGain(float gain) 设置背景乐增益,[0f, 1f]
void toggleFlash(boolean flag) 开关闪光灯
boolean canSwitchCamera() 是否可以切换摄像头
void switchCamera(int cameraId) 设置摄像头ID
void focusToPoint(int x, int y) 调用一次,对焦一次
int getMaxZoomFactor() 获取相机放大因子
boolean setZoomFactor(int factor) 设置相机放大因子
void setCaptureErrorListener(CaptureErrorListener errorListener) 设置录制错误回调

编辑预览MediaPreviewSession类

接口名 描述
void setVideoAudioEnabled(boolean isVideoEnabled, boolean isAudioEnabled) 设置是否解码音频或视频。注:若想加入背景乐,必须enable音频作为主track,不想听见原视频的音频Track的话,设置MasterTrackGain为0即可;
void setSurfaceHolder(SurfaceHolder surfaceHolder) 绑定Surfaceholder
void setMediaFilePath(String mediaFilePath) 设置源视频文件的路径
void setPlaybackRate(int playbackRate) 设置预览的速率,支持1到9的整数
void start() 开始预览
void pause() 暂停预览
void resume() 恢复预览
void stop() 停止预览
void release() 不再使用时释放
void setPreviewStateListener(PreviewStateListener listener) 设置预览状态监听
void setLooping(boolean isLooping) 是否循环播放
void configBackgroundMusic(boolean enableBGM, String bgmPath, boolean isLooping) 配置背景乐
void configBackgroundMusicClip(long clipStartInUSec, long clipDurationInUSec) 配置背景乐区间,单位微妙,第二个参数为指定的区间长度并非结束时间
void setMasterTrackGain(float mainGain) 设置源视频文件中音频的增益
void setBGMTrackGain(float subGain) 设置背景乐增益
void configMediaFileClip(long clipStartInUSec, long clipDurationInUSec) 设置源视频的区间,单位微妙,第二个参数为指定的区间长度并非结束时间
void setGPUImageFilters(List filters) 设置滤镜列表List

后台合成MediaProcessSession类

接口名 描述
void setProcessStateListener(ProcessStateListener listener) 设置合成进度监听
void setMediaFilePath(String mediaFilePath) 设置源视频文件路径
void setPlaybackRate(int playbackRate) 设置处理的速率,支持1到9的整数
void start() 开始合成
void stop() 结束合成
void configBackgroundMusic(boolean enableBGM, String bgmPath, boolean isLooping) 配置背景乐
void configBackgroundMusicClip(long clipStartInUSec, long clipDurationInUSec) 配置背景乐区间,单位微妙,第二个参数为指定的区间长度并非结束时间
void setMasterTrackGain(float mainGain) 设置源视频文件中音频的增益
void setBGMTrackGain(float subGain) 设置背景乐增益
void configMediaFileClip(long clipStartInUSec, long clipDurationInUSec) 设置源视频的区间,单位微妙,第二个参数为指定的区间长度并非结束时间
void setGPUImageFilters(List filters) 设置滤镜列表List
void configMp4Saver(boolean saveMp4, String localMp4Path) 设置合成视频的存储路径

(双向)直播LiveStreamSession类

接口名 描述
void setupDevice() 初始化Device
void setSurfaceHolder(SurfaceHolder surfaceHolder) 绑定本地预览的SurfaceHolder
void configRtmpSession(String pushUrl, BDRtmpSessionBasic.UserRole role) 初始化双向Rtmp协议处理模块实例
void destroyRtmpSession() 销毁双向Rtmp协议处理模块实例
void configBackgroundMusic(boolean enableBGM, String bgmPath, boolean isLooping) 设置背景乐路径及是否循环
void configBackgroundMusicClip(long clipStartInUSec, long clipDurationInUSec) 设置背景乐区间,单位微妙,第二个参数为指定的区间长度并非结束时间
void startStreaming() 开始推流
void pauseStreaming() 暂停推流
void resumeStreaming() 恢复推流
void stopStreaming() 停止推流
void startCallWith(String url, String uid) 发起与用户uid的会话请求
void stopCallWith(String url, String uid) 结束(或取消)与用户uid的会话
void releaseDevice() 释放采集设备相关资源
Bitmap getScreenShot() 获取截图
void setGPUImageFilters(List filters) 设置滤镜List
void setRecordTrackGain(float gain) 设置录音增益,[0f, 1f]
void setBGMTrackGain(float gain) 设置背景乐增益,[0f, 1f]
void toggleFlash(boolean flag) 开关闪光灯
boolean canSwitchCamera() 是否可以切换摄像头
void switchCamera(int cameraId) 设置摄像头ID
void focusToPoint(int x, int y) 调用一次,对焦一次
int getMaxZoomFactor() 获取相机放大因子
boolean setZoomFactor(int factor) 设置相机放大因子
void setCaptureErrorListener(CaptureErrorListener errorListener) 设置录制错误回调

录屏直播LiveScreenStreamSession类

接口名 描述
void setupDevice() 初始化Device
void configRtmpSession(String pushUrl, BDRtmpSessionBasic.UserRole role) 初始化双向Rtmp协议处理模块实例
void destroyRtmpSession() 销毁双向Rtmp协议处理模块实例
void configBackgroundMusic(boolean enableBGM, String bgmPath, boolean isLooping) 设置背景乐路径及是否循环
void configBackgroundMusicClip(long clipStartInUSec, long clipDurationInUSec) 设置背景乐区间,单位微妙,第二个参数为指定的区间长度并非结束时间
void startStreaming() 开始推流
void pauseStreaming() 暂停推流
void resumeStreaming() 恢复推流
void stopStreaming() 停止推流
void releaseDevice() 释放采集设备相关资源
Bitmap getScreenShot() 获取截图
void setGPUImageFilters(List filters) 设置滤镜List
void setRecordTrackGain(float gain) 设置录音增益,[0f, 1f]
void setBGMTrackGain(float gain) 设置背景乐增益,[0f, 1f]
void setCaptureErrorListener(CaptureErrorListener errorListener) 设置录制错误回调

Device相关接口

定制Session时,这些接口会涉及底层组件相关接口

视频录制CameraCaptureDevice类

接口名 描述
Camera.Size getCameraSize() 获取摄像头产出图像的宽高
int getCurrentCameraId() 获取当前CameraId
boolean openCamera(int desiredWidth, int desiredHeight, int desiredFps, int cameraId) 打开摄像头
void closeCamera() 关闭摄像头
void toggleFlash(boolean flag) 开关摄像头
boolean canSwitchCamera() 是否可切换摄像头
void switchCamera(int cameraId) 切换摄像头
void focusToPoint(int x, int y) 对焦一次
int getMaxZoomFactor() 获得最大放大因子
boolean setZoomFactor(int factor) 设置相机放大因子
void startCameraPreview(SurfaceTexture surfaceTexture) 设置Camera的输出Surface,并开始预览
void stopCameraPreview() 停止预览

音频录制AudioRecorderDevice类

接口名 描述
void setNeedFixCaptureSize(boolean isFixed) 是否限制音频输出Buffer大小,限制后每次buffer为4096;不限制(false)时buffer大小为10240
int getRecorderAudioSessionId() 获取AudioRecorder的SessionId
boolean openAudioRecorder() 打开音频录制并开启发送循环
void setAudioEnabled(boolean flag) 设置是否产出音频
void setOnDeviceFrameUpdateListener(OnDeviceFrameUpdateListener listener) 设置音频帧产出后的回调监听
void setEpochTimeInNs(long pts) 设置起始时间
void closeAudioRecorder() 关闭AudioRecorder并停止发送循环

视频解码MediaDecoderDevice类

接口名 描述
MediaDecoderDevice(String fileFullPath) 构造函数
void configClip(long clipStartPointInUSec, long clipDurationInUSec) 配置起始位置与截取区间大小。clipDurationInUSec为-1时标识文件末尾;
void pause() 暂停解码
void resume() 恢复解码
void setExtractVideoEnabled(boolean extractVideo) 设置是否解码视频
void setExtractAudioEnabled(boolean extractAudio) 设置是否解码音频
void setPlaybackRate(int playbackRate) 设置处理的速率,支持1到9的整数,支持处理中改变速率
void setIsSyncWithSystemTime(boolean syncWithSystemTime) 设置解码是否同步系统时钟,预览时需要。
void setOnAudioDeviceFrameUpdateListener(OnDeviceFrameUpdateListener audioListener) 设置音频帧解码后的回调监控
void setOnVideoDeviceFrameUpdateListener(OnDeviceFrameUpdateListener videoListener) 设置视频帧解码后的回调监控
void setVideoOutputSurface(Surface surface) 设置视频产出的Surface
void setOnDeviceVideoSizeChangedListener(OnDeviceVideoSizeChangedListener listener) 设置视频大小回调监听
void startDecoder() 开启解码
void stopDecoder() 停止解码
void setOnDecodeStateChangeListener(OnDecodeStateChangeListener listener) 设置解码Device的进度监听

处理Filter相关

AudioFilter类

接口名 描述
void setup(boolean needRenderMasterTrack) 初始音频处理,是否播放主音轨
void setup(boolean needRenderMasterTrack, int streamType, int audioSessionId) 初始音频处理器,指定播放的参数
int addSubTrack() 增加子音轨,如背景乐
void clearSubTrack() 清除子音轨
void setMasterTrackGain(float volume) 设置主音轨增益
void setSubTrackGain(float volume) 设置子音轨增益,如背景乐
void pushDataForSubTrack(ByteBuffer music, MediaCodec.BufferInfo info, int trackIndex) 往AudioFilter中塞入背景乐解码数据
void pushDataForMasterTrack(ByteBuffer sound, MediaCodec.BufferInfo info) 往AudioFilter中塞入主音轨数据
void setNeedRendering(boolean needRendering) 设置是否需要播放声音
void resetBuffer() 重置主音轨和子音轨。调用后需将外层通过addSubTrack拿到的ID置为-1
void clearMasterTrackQueue() 清除主音轨队列
void release() 不再使用时释放
void setOnFilteredFrameUpdateListener(OnFilteredFrameUpdateListener listener) 设置音频帧处理后的回调监听

VideoFilter类

接口名 描述
void setup() 开启处理线程
void release() 不再使用时,释放处理线程
void pause() 暂停处理视频帧
void resume() 恢复处理视频帧
void setFaceDetector(FaceDetector faceDetector) 设置人脸检测模块实例
void setVideoEnabled(boolean isEnabled) 开启编码音频的输出开关
void setEpochTimeInNs(long epochTimeInNs) 设置初始计时时间,录制时使用
void setCurrentPresentationTimeInUs(long presentationTimeInUs) 设置当前时间。视频帧来源于文件解码时,每帧都会调用
void setEncodeSize(int encodeVideoWidth, int encodeVideoHeight) 设置编码帧的宽高
void setInputSize(int width, int height) 设置输入帧的宽高
void refreshVideoFrame() 手动触发帧绘制,目前暂时只有录屏直播场景需要
Bitmap getScreenShot() 获取截图
SurfaceTexture getFilterInputSurfaceTexture() 获取待输入的SurfaceTexture,一般上层Device拿到这个对象后作为Device的产出目标
void setEncodeSurface(Surface encodeSurface) 设置产出Surface,一般将下层的Encoder的编码源Surface设置到这里
void setPreviewSurface(Surface surface) 设置预览Surface
void setPreviewSurfaceSize(int width, int height) 设置预览Surface的分辨率大小
void setOnFilteredFrameUpdateListener(OnFilteredFrameUpdateListener listener) 设置处理后的回调监听
void setOutputHorizonFlip(boolean isOutputHorizonFlip) 设置是否水平方向画面翻转,即镜子效果
void setGPUImageFilters(List imageFilters) 设置滤镜列表
void setGPUImageFilters(List imageFilters, boolean useOESExt) 设置滤镜列表,增加是否开启OES纹理加载功能(用于将相机预览Surface和视频播放显示Surface中颜色数据转换成RGBA格式)

编码Encoder相关

AudioMediaEncoder类

接口名 描述
boolean setupEncoder(int sample_rate, int channel, int bitrate) 初始化音频Encoder
void setOnProcessOverListener(OnFinishListener encodeOverListener) 设置编码完成的回调
void start() 允许编码器输出
void stop() 停止编码器输出
void setOnEncodedFrameUpdateListener(OnEncodedFrameUpdateListener listener) 设置编码后,帧更新的回调
void setMediaFormatChangedListener(MediaFormatChangedListener listener) 设置编码过程中产出了MediaFormat时的回调
void signalEndOfInputStream(long pts) 通知流结束
void push(byte[] audioSample, int size, long ptsInUs) 为音频编码器提供数据
void release() 不再使用时释放

VideoMediaEncoder类

接口名 描述
void setupEncoder(int width, int height, int bitRate, int frameRate, int desiredSpanSec) 初始化视频编码器并启动编码线程
boolean requestKeyFrame() 强制编码关键帧,解决采集过程中暂停恢复后可能花屏的问题
changeBitrate(int bitrateInKbps) 动态改变编码码率
Surface getInputSurface() 获得输入Surface,一般作为Filter的输出Surface
void start() 允许视频编码输出
void stop() 禁止视频编码输出
void release() 不再使用时释放编码器并结束编码线程
void signalEndOfInputStream() 编码结束信号,通知编码器后续不再有流
void setOnProcessOverListener(OnFinishListener encodeOverListener) 设置编码全部完成后的回调监听
void setMediaFormatChangedListener(MediaFormatChangedListener listener) 设置编码器MediaFormat信息产生后的回调监听
void frameAvailableSoon() 有帧更新的通知void setOnEncodedFrameUpdateListener(OnEncodedFrameUpdateListener listener)设置编码完一帧后的监听回调

Muxer相关

MediaMuxer系统类

接口名 描述
MediaMuxer(String path, int format) 构造函数
int addTrack(MediaFormat format) 增加音轨或视频轨,需要音轨和视频轨都加完后才能调用start
void start() 开始封装
void writeSampleData(int trackIndex, ByteBuffer byteBuf, MediaCodec.BufferInfo bufferInfo) start后,写入待封装的数据
void stop() 结束封装
void release() 不再使用时释放

FlvMuxer

处理打包FlvTag的功能模块

接口名 描述
FlvMuxer(BidirectRtmpSocket rtmpSocket) 构造函数
void setEpoch(long epoch) 设置开始时刻(单位NS),必须与音视频采集模块开始时刻一样
void setFPS(int fps) 设置视频帧率
void setRtmpSocket(BidirectRtmpSocket socket) 设置用于推流的rtmp socket
int addTrack(MediaFormat format) 增加音轨或视频轨
void writeSampleData(int trackIndex, ByteBuffer byteBuf, MediaCodec.BufferInfo bufferInfo) 设置rtmp socket后,写入待发送的音视频裸流
double getUploadBindwidthInKBps() 获取当前的事件上传带宽,单位为KBps
public double getUploadFps() 获取当前实时上传帧率

(互动)直播相关

BDRtmpSessionBasic

互动直播业务层接口,用于处理互动直播信令相关逻辑

接口名 描述
BDRtmpSessionBasic(UserRole role) 构造函数,需要确定用户角色
void setEventListener(OnSessionEventListener listener) 设置事件监听器
BidirectRtmpSocket getRtmpSocket() 获取rtmp socket实例
void setStreamingURL(String url) 设置推流地址
void setUserId(String uId) 设置当前用户的业务ID
void setUserRole(UserRole role) 修改用户角色
void createStream() 连接rtmp服务器,建立信令和推流通道
void destroyStream() 断开与rtmp服务器连接,销毁信令和推流通道
void startConversation(String targetUrl, String targetUserId) 发起会话请求
void stopConversation(String targetUrl, String targetUserId) 结束(或取消)与用户uid的会话

BidirectRtmpSocket

双向rtmp协议栈处理模块

接口名 描述
BidirectRtmpSocket() 构造函数
void setEventListener(BidirectRtmpEventListener listener) 设置事件监听器
void connect(String url) 连接rtmp服务器
void disconnect() 断开与rtmp服务器连接
boolean isConnected() 判断当前rtmp连接的连通性
void sendRtmpPacket(byte[] buf, int len, long pts, int frame_type) 发送媒体数据
void sendMetadata(int width, int height, double fps, double videoBitrate, double audioBitrate, int samplerate) 发送MetaData数据
void sendCallSignal(String targetStreamUrl, String targetUserId, String localUserId) 发送连麦请求,高级观众>>大主播
void sendResponseToCall(String callerStreamUrl, String callerUserId, String localUserId, BidirectRtmpMessage.ResponseCode code) 发送连麦请求应答
void sendInviteSignal(String targetStreamUrl, String targetUserId, String localUserId) 发送连麦邀请,大主播>>高级观众
void sendResponseToInvite(String callerStreamUrl, String callerUserId, String localUserId, BidirectRtmpMessage.ResponseCode code) 发送邀请应答
void sendAckSignal(String targetStreamUrl, String targetUserId, String localUserId) 发送ACK信令,表示自己已经开始推流或已经结束推流
void sendCancelSignal(String targetStreamUrl, String targetUserId, String localUserId) 发送取消连麦
void sendKickSignal(String targetStreamUrl, String targetUserId, String localUserId) 发送踢人请求,大主播>>高级观众
void sendByeSignal(String targetStreamUrl, String targetUserId, String localUserId) 发送结束会话信号,高级观众>>大主播
void sendPingSignal(String targetStreamUrl, String targetUserId, String localUserId, String extInfo) 发送ping心跳,主要用来维持与服务器的连接
void sendInfoSignal(String targetStreamUrl, String targetUserId, String localUserId, String json) 发送其他业务信息
double getSendFPS() 获取当前实时上传帧率
double getCurrentBandwidthKBps() 获取实时上传带宽