public class VideoLiveSession extends java.lang.Object implements IYYVideoSurfaceInfoListener, IEncoderListener, ILiveSession
| Modifier and Type | Field and Description |
|---|---|
CameraCaptureFilter |
mCaptureFilter |
ClipFilter |
mCliperFilter |
VideoEncoderGroupFilter |
mEncoderGroupFilter |
VideoEndPointFilter |
mEndPointFilter |
ExternalDecoderFilter |
mExternalDecoderFilter |
VideoLiveFilterContext |
mFilterContext |
PeripheralsDecoderFilter |
mPeripheralsDecoderFilter
PeripheralsDecoderFilter -->
CameraCaptureFilter-->VideoLiveQualityFilter
-->GPUPreprocessFilter-->
ClipFilter-->
-->PreviewFilter
-->VideoEncoderGroupFilter-->TransmitUploadFilter
|
GPUPreprocessFilter |
mPreprocessFilter |
PreviewFilter |
mPreviewFilter |
EVENT_SURFACE_AVAIBLE, EVENT_SURFACE_DESTROYED, EVENT_SURFACE_SIZE_CHANGED| Constructor and Description |
|---|
VideoLiveSession(android.content.Context context)
默认的开播的VideoLiveSession
|
| Modifier and Type | Method and Description |
|---|---|
void |
adjustEncoderBitrate(int bitRate) |
void |
enableColorChartLive(boolean enable)
色卡开播,参数设为true时,观看端看到的是色卡,主播段不变。
|
void |
enableMirror(boolean enable)
镜像开关设置
|
boolean |
isHardwareEncoderAvailable()
获取是否允许硬编开播
|
void |
onDualOpen(boolean flag) |
void |
onDualPictureSwitch()
双摄开播大小画面切换
|
void |
onEncodeEncParam(java.lang.String param)
sdk内部编码参数通知.
|
void |
onEncodeFirstFrame()
编码头一帧回调接口.
|
void |
onEncodeFrameData(byte[] data,
int len,
long pts,
long dts,
int frameType,
VideoEncoderType encodeType,
int svcTid,
int svcSid)
编码后一帧视频数据的输出回调函数.
|
void |
onEncodeResolution(int width,
int height)
实际编码的分辨率回调接口, 每3秒钟回调一次.
|
void |
onEncoderSwitch()
切换视频编码器
|
void |
onEncodeStat(int bitRate,
int frameRate)
编码码率,帧率统计数据回调接口, 每3秒钟回调一次.
|
void |
onExternalVideoEnd() |
void |
onHardEncoderError()
硬编出错,通知上层禁用硬编
|
void |
onOutdoorVideoConfigReceived(DecodeVideoConfig config) |
void |
onOutdoorVideoDataReceived(DecodeVideoSample sample)
收到户外的视频数据
|
void |
onPeripheralsVideoConfigReceived(DecodeVideoConfig config) |
void |
onPeripheralsVideoDataReceived(DecodeVideoSample sample)
收到外设的视频数据
|
void |
onPeripheralsVideoEnd() |
void |
onSurfaceInfoEvent(int evtType,
AbstractSurfaceInfo surfaceInfo)
此函数不要做太多事情, 因为可能VideoLiveSession正在被调用StopAndRelease, 会有一些线程同步的问题.
|
void |
onWaterMarkSizeChange(int w,
int h)
切换弱网之后,编码分辨率变更,需要变换水印的坐标和宽高
|
void |
registerPreviewCallback(PreviewFrameCallback callback) |
void |
requestIFrame() |
void |
setBackground(Background background) |
void |
setDeltaYYPtsMillions(long deltaPtsDts) |
void |
setDynamicTexture(IDynamicTexture dynamicTexture) |
void |
setEncoderConfig(VideoEncoderConfig config)
配置编码器(软编硬编都需要配置)
|
void |
setEncoderListener(IEncoderListener listener) |
void |
setExternalCameraDataCallback(ExternalInterface.IExternalCameraData IExternalCameraData) |
void |
setExternalDecodeInterface(ExternalInterface.IExternalDecode IExternalDecode) |
void |
setExtraPerformance(Constant.ExtraPerformance extraPerformance,
java.lang.Boolean on,
int value) |
void |
setFilterInfo(FilterType filterType,
java.util.Map<java.lang.String,java.lang.String> params) |
void |
setFilterType(FilterType filterType) |
void |
setGLManagerRunnable(java.lang.Runnable runnable) |
void |
setGPUImageBeautyFilter(IGPUProcess gpuImageProcess) |
void |
setHardwareEncoderAvailable(boolean available)
设置是否允许硬编开播
|
void |
setLowDelayMode(boolean enable) |
void |
setNetworkBitrateSuggest(int bitrate) |
void |
setResolutionModifyConfigs(java.util.List<ResolutionModifyConfig> configs,
int intervalSecs) |
void |
setScreenShot(ScreenShot screenShot) |
void |
setSessionLiveMode(LiveSessionType type) |
void |
setSurfaceChanged(int w,
int h)
在3人连麦的场景会直接变更cameraSurfaceView的大小,
导致中间出现一个onsurfaceChange和实际执行handlerSurfacechanged之间有时间差,
大约500ms,导致出现画面异常,此接口只在3人竞技场的时候调用
|
void |
setUserLiveConfig(YYUserLiveConfig userLiveConfig)
不频繁调用,且销毁内存不多,所以每次调用copy一个新的config,以防线程竞争.
|
void |
setVideoRenderPostion(VideoRenderPosition position) |
void |
setWaterMark(android.graphics.Bitmap bitmap,
int offsetX,
int offsetY) |
void |
setWaterMark(WaterMark waterMark) |
void |
startEncodeExternalData(YYMediaSample sample) |
void |
startEncoder()
启动编码器
|
void |
startPreview(int previewWidth,
int previewHeight,
int cameraFacing,
CameraInterface.CameraResolutionMode resMode) |
void |
startRvSensor()
注册旋转矢量传感器
|
void |
stopAndRelease() |
void |
stopEncoder()
关闭编码器
|
void |
stopRvSensor()
反注册旋转矢量传感器
|
void |
takeScreenShot(ScreenShotCallback callback)
设置截屏回调接口.
|
void |
unregisterPreviewCallback(PreviewFrameCallback callback) |
public PeripheralsDecoderFilter mPeripheralsDecoderFilter
public ExternalDecoderFilter mExternalDecoderFilter
public CameraCaptureFilter mCaptureFilter
public GPUPreprocessFilter mPreprocessFilter
public ClipFilter mCliperFilter
public PreviewFilter mPreviewFilter
public VideoEncoderGroupFilter mEncoderGroupFilter
public VideoLiveFilterContext mFilterContext
public VideoEndPointFilter mEndPointFilter
public VideoLiveSession(android.content.Context context)
public void startPreview(int previewWidth,
int previewHeight,
int cameraFacing,
CameraInterface.CameraResolutionMode resMode)
public void stopAndRelease()
stopAndRelease in interface ILiveSessionpublic void startEncoder()
ILiveSessionstartEncoder in interface ILiveSessionpublic void stopEncoder()
ILiveSessionstopEncoder in interface ILiveSessionpublic void onSurfaceInfoEvent(int evtType,
AbstractSurfaceInfo surfaceInfo)
onSurfaceInfoEvent in interface IYYVideoSurfaceInfoListenerevtType - surfaceInfo - public void setScreenShot(ScreenShot screenShot)
public void setFilterInfo(FilterType filterType, java.util.Map<java.lang.String,java.lang.String> params)
public void setFilterType(FilterType filterType)
public void setWaterMark(WaterMark waterMark)
public void setBackground(Background background)
public void setDynamicTexture(IDynamicTexture dynamicTexture)
setDynamicTexture in interface ILiveSessionpublic void takeScreenShot(ScreenShotCallback callback)
takeScreenShot in interface ILiveSessioncallback - 截屏回调接口, 详细见 ScreenShotCallbackpublic void setNetworkBitrateSuggest(int bitrate)
setNetworkBitrateSuggest in interface ILiveSessionpublic void setResolutionModifyConfigs(java.util.List<ResolutionModifyConfig> configs, int intervalSecs)
setResolutionModifyConfigs in interface ILiveSessionpublic void setEncoderListener(IEncoderListener listener)
setEncoderListener in interface ILiveSessionpublic void setEncoderConfig(VideoEncoderConfig config)
ILiveSessionsetEncoderConfig in interface ILiveSessionpublic void setLowDelayMode(boolean enable)
setLowDelayMode in interface ILiveSessionpublic void adjustEncoderBitrate(int bitRate)
adjustEncoderBitrate in interface ILiveSessionpublic void onEncodeStat(int bitRate,
int frameRate)
IEncoderListeneronEncodeStat in interface IEncoderListenerbitRate - 实际编码输出的码率.frameRate - 实际编码输出的帧率.public void onEncodeResolution(int width,
int height)
IEncoderListeneronEncodeResolution in interface IEncoderListenerwidth - 实际编码分辨率宽度height - 实际编码分辨率高度.public void onEncodeFirstFrame()
IEncoderListeneronEncodeFirstFrame in interface IEncoderListenerpublic void onHardEncoderError()
IEncoderListeneronHardEncoderError in interface IEncoderListenerpublic void onEncodeFrameData(byte[] data,
int len,
long pts,
long dts,
int frameType,
VideoEncoderType encodeType,
int svcTid,
int svcSid)
IEncoderListeneronEncodeFrameData in interface IEncoderListenerdata - 编码后的视频数据len - 视频数据的长度pts - 视频数据的pts, 单位是msdts - 视频数据的dts, 单位是msframeType - 视频数据的帧类型,YY系统中的帧类型取值一样.encodeType - 视频数据的编码类型,这里是开播SDK中定义的encodeType,特别提醒这里和yysdk中传输定义的encodeType有不同.public void onEncodeEncParam(java.lang.String param)
IEncoderListeneronEncodeEncParam in interface IEncoderListenerparam - 编码参数,一般用于调试打印在屏幕,或者统计等等.public void onEncoderSwitch()
IEncoderListeneronEncoderSwitch in interface IEncoderListenerpublic void onWaterMarkSizeChange(int w,
int h)
IEncoderListeneronWaterMarkSizeChange in interface IEncoderListenerpublic void requestIFrame()
requestIFrame in interface ILiveSessionpublic void setUserLiveConfig(YYUserLiveConfig userLiveConfig)
userLiveConfig - public void enableColorChartLive(boolean enable)
enable - public void onDualPictureSwitch()
public void onDualOpen(boolean flag)
public void enableMirror(boolean enable)
enable - public void setHardwareEncoderAvailable(boolean available)
ILiveSessionsetHardwareEncoderAvailable in interface ILiveSessionpublic boolean isHardwareEncoderAvailable()
ILiveSessionisHardwareEncoderAvailable in interface ILiveSessionpublic void setSurfaceChanged(int w,
int h)
public void onPeripheralsVideoDataReceived(DecodeVideoSample sample)
public void onPeripheralsVideoConfigReceived(DecodeVideoConfig config)
public void onOutdoorVideoDataReceived(DecodeVideoSample sample)
public void onOutdoorVideoConfigReceived(DecodeVideoConfig config)
public void onPeripheralsVideoEnd()
public void onExternalVideoEnd()
public void setSessionLiveMode(LiveSessionType type)
public void setVideoRenderPostion(VideoRenderPosition position)
public void startRvSensor()
public void stopRvSensor()
public void setDeltaYYPtsMillions(long deltaPtsDts)
public void registerPreviewCallback(PreviewFrameCallback callback)
public void unregisterPreviewCallback(PreviewFrameCallback callback)
public void setExternalCameraDataCallback(ExternalInterface.IExternalCameraData IExternalCameraData)
public void setExternalDecodeInterface(ExternalInterface.IExternalDecode IExternalDecode)
public void startEncodeExternalData(YYMediaSample sample)
public void setGLManagerRunnable(java.lang.Runnable runnable)
public void setExtraPerformance(Constant.ExtraPerformance extraPerformance, java.lang.Boolean on, int value)
public void setGPUImageBeautyFilter(IGPUProcess gpuImageProcess)
public void setWaterMark(android.graphics.Bitmap bitmap,
int offsetX,
int offsetY)
setWaterMark in interface ILiveSession