public class VideoEncoderGroupFilter extends AbstractYYMediaFilter implements IEncoderListener, IEncodeParamListener, AbstractVideoLiveQualityFilter.IWeakerNetworkCallback, AbstractEncoderFilter.IEncodedDataOutCallBack, AbstractEncoderFilter.IEncodeStateCallBack
| Modifier and Type | Field and Description |
|---|---|
protected java.util.List<ResolutionModifyConfig> |
mResolutionModifyConfigs |
protected int |
mResolutionModifyInterval |
mDownStreamList, mImageHeight, mImageWidth, mOutputHeight, mOutputWidth, mSlaveVertexBuffer| Constructor and Description |
|---|
VideoEncoderGroupFilter(VideoLiveFilterContext filterContext,
ILiveSession liveSession) |
| Modifier and Type | Method and Description |
|---|---|
void |
adjustBitRate(int kpbs) |
void |
deInit() |
void |
encodeParamChanged(java.lang.String param) |
void |
init() |
boolean |
isEnable() |
void |
notifyInitEncoderParams(int frameRate,
int bitrate) |
void |
onEncodeEncParam(java.lang.String param)
sdk内部编码参数通知.
|
void |
onEncodeError(java.lang.String exceptionId)
编码器编码过程异常通知到这里
|
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 |
onFirstEncodedDataOut()
新编码器有输出可以开始直接切换到新解码器上了
todo 硬编是在GL线程,软编在新解码器的handler线程上
|
void |
onHardEncoderError()
硬编出错,通知上层禁用硬编
|
void |
onNoEncodedDataOut()
取旧编码器的输出,直接在新编码器的线程中完成操作
todo 硬编在GL主线程中,这时候是去调用软编的取缓存帧代码,需要考虑GL线程和软编的编码handler之间的同步问题
todo 软编在新软编码器的handler线程中,需要考虑软编的编码handler和硬编的主GL线程之间的同步(软编handler起来,GL线程不会调用硬编,故不需要同步)
|
void |
onReCreateEncoder(VideoEncoderConfig config) |
void |
onWaterMarkSizeChange(int w,
int h)
切换弱网之后,编码分辨率变更,需要变换水印的坐标和宽高
|
boolean |
processMediaSample(YYMediaSample sample,
java.lang.Object upstream) |
void |
requestSyncFrame() |
void |
reSetEncodingState() |
void |
setEncoderListener(IEncoderListener listener) |
void |
setExternalCameraDataCallback(ExternalInterface.IExternalCameraData iExternalCameraData) |
void |
setExternalDecodeCallback(ExternalInterface.IExternalDecode iExternalDecode) |
void |
setIsExternalEncode(boolean mIsExternalEncode) |
void |
setNetworkBitrateSuggest(int bitrate) |
void |
setResolutionModifyConfigs(java.util.List<ResolutionModifyConfig> configs,
int intervalSecs) |
boolean |
startEncode(VideoEncoderConfig encoderConfig) |
void |
stopEncode() |
addDownStream, checkImageSizeUpdated, checkOuptuSizeUpdate, deliverToDownStream, removeAllDownStream, removeDownStream, setImageSize, setOutputSizeprotected java.util.List<ResolutionModifyConfig> mResolutionModifyConfigs
protected int mResolutionModifyInterval
public VideoEncoderGroupFilter(VideoLiveFilterContext filterContext, ILiveSession liveSession)
public void setEncoderListener(IEncoderListener listener)
public void init()
public void deInit()
deInit in class AbstractYYMediaFilterpublic boolean isEnable()
public void reSetEncodingState()
public boolean startEncode(VideoEncoderConfig encoderConfig)
public void stopEncode()
public void requestSyncFrame()
public void setIsExternalEncode(boolean mIsExternalEncode)
public void setExternalCameraDataCallback(ExternalInterface.IExternalCameraData iExternalCameraData)
public void setExternalDecodeCallback(ExternalInterface.IExternalDecode iExternalDecode)
public void onExternalVideoEnd()
public boolean processMediaSample(YYMediaSample sample, java.lang.Object upstream)
processMediaSample in interface IMediaFilterprocessMediaSample in class AbstractYYMediaFilterpublic void setNetworkBitrateSuggest(int bitrate)
public void adjustBitRate(int kpbs)
public void setResolutionModifyConfigs(java.util.List<ResolutionModifyConfig> configs, int intervalSecs)
public 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 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 encodeParamChanged(java.lang.String param)
encodeParamChanged in interface IEncodeParamListenerpublic void onHardEncoderError()
IEncoderListeneronHardEncoderError in interface IEncoderListenerpublic void onEncoderSwitch()
IEncoderListeneronEncoderSwitch in interface IEncoderListenerpublic void notifyInitEncoderParams(int frameRate,
int bitrate)
notifyInitEncoderParams in interface AbstractVideoLiveQualityFilter.IWeakerNetworkCallbackpublic void onReCreateEncoder(VideoEncoderConfig config)
onReCreateEncoder in interface AbstractVideoLiveQualityFilter.IWeakerNetworkCallbackpublic void onWaterMarkSizeChange(int w,
int h)
IEncoderListeneronWaterMarkSizeChange in interface IEncoderListenerpublic void onNoEncodedDataOut()
onNoEncodedDataOut in interface AbstractEncoderFilter.IEncodedDataOutCallBackpublic void onEncodeError(java.lang.String exceptionId)
onEncodeError in interface AbstractEncoderFilter.IEncodeStateCallBackpublic void onFirstEncodedDataOut()
onFirstEncodedDataOut in interface AbstractEncoderFilter.IEncodedDataOutCallBack