-
Notifications
You must be signed in to change notification settings - Fork 209
Trasform_Info
Franken Zeng edited this page Jan 24, 2017
·
33 revisions
阅读详细迁移前,请仔细阅读总体说明
从以下地址中下载4.0的最新版本:
4.0Demo
替换根目录中libs下面相应的so和jar到您的libs目录下面
注:如果您在引入jar的时候使用了ksylive3.0.jar的名字,那需要修改jar的名字为ksylive4.0.jar
替换jar和so后,应该会存在一部分编译错误,下面一一解决各个编译错误
包名变更对照表
原始包名 | 替换包名 | 备注 |
---|---|---|
com.ksy.recordlib.service .core.KSYStreamer |
com.ksyun.media.streamer .kit.KSYStreamer |
该类负责封装各个积木类,集成了推流所有的操作,后续开放各个积木类,您可以不使用该类,自己搭建积木,该类说明详见KSYStreamer |
com.ksy.recordlib.service .core.KSYStreamerConfig |
com.ksyun.media.streamer .kit.KSYStreamerConfig |
推流配置参数类,不建议继续使用该类,可以使用KSYStreamer相应的setXXX接口来替换该类,该类在后期不再维护,如何替换使用参考推流初始化参数 |
com.ksy.recordlib.service .stats .OnLogEventListener |
com.ksyun.media.streamer .logstats.StatsLogReport .OnLogEventListener |
日志回调接口,返回日志上报的信息,该接口的回调函数onLogEvent参数由StringBuffer修改为StringBuilder,参考Demo中CameraActivity中mOnLogListener成员变量 |
com.ksy.recordlib.service .stats .StreamStatusEventHandler |
N/A | 状态和错误回调类,该类被删除,替换为KSYStreamer.OnInfoListener和KSYStreamer.OnErrorListener mOnErrorListener;详细参考状态和错误回调 |
com.ksy.recordlib.service .streamer.RecorderConstants |
com.ksyun.media.streamer .kit.StreamerConstants |
常量定义类,在StreamerConstants中没有的定义,建议不要再使用 |
com.ksy.recordlib.service .streamer .OnPreviewFrameListener |
com.ksyun.media.streamer .kit .OnPreviewFrameListener |
该接口用来返回视频的原始数据,该接口还是有效,但是后期不建议您再使用该接口,可以继承ImgTexFilter来创建自己Filter,参考自定义视频滤镜 |
com.ksy.recordlib.service .streamer.OnStatusListener |
N/A | 直接删除,不需要了,之前和这关联的代码,您可以替换成KSYStreamer.OnInfoListener和KSYStreamer.OnErrorListener mOnErrorListener,参考InfoError |
com.ksy.recordlib.service .util.audio .OnAudioRawDataListener |
com.ksyun.media.streamer .kit .OnAudioRawDataListener |
该接口用来返回音频的原始数据,该接口还是有效,但是后期不建议您再使用,可以继承AudioFilterBase来自定义音频滤镜,详细参考音频滤镜 |
com.ksy.recordlib.service .util.audio.KSYBgmPlayer |
com.ksyun.media.streamer .util.audio.KSYBgmPlayer |
对于KSYBgmPlayer的使用有所变更,详细参考背景音乐 |
com.ksy.recordlib.service .hardware.ksyfilter .KSYImageFilter |
com.ksyun.media.streamer .filter.imgtex .ImgTexFilter |
视频滤镜基类,详细参考自定义视频滤镜 |
com.ksy.recordlib.service .view.CameraGLSurfaceView |
N/A | 该类被删除,直接使用GLSurfaceView |
以下的错误代码,可以直接删除
4.0状态错误回调参考:状态错误回调
KSYStreamer
的接口setOnLogListener(mOnLogListener)
被删除了,替换为:
StatsLogReport.getInstance().setOnLogEventListener(mOnLogListener)
参考Demo中CameraActivity的mOnLogListener成员变量
4.0版本暂时不支持画中画功能,如果您有画中画功能,建议您等下一个版本
如果您要使用4.0,则需要注释所有画中画相关代码。
- 音频升降调
4.0版本暂时不支持音频升降调功能,如果您有该功能,建议您等下一个版本
- 美声
setEnableReverb接口被删除,不建议调用单独的接口再对音频数据进行处理,您需要使用AudioFilterMgt类对音频进行控制。
详细请参考AudioFilter
- 停止推流的接口没有参数了,不需要设置任何参数,在窗口退出的时候不需要再额外调用stopStream
- 窗口退出的代码参考CameraActivity的onBackoffClick函数
- 关于分辨率的设置,原有的四种分辨率设置当前依然支持,只需要把
RecorderConstants
的地方修改为StreamerConstants使用即可。 - 通过KSYStreamer的接口可以分别设置预览分辨率和推流分辨率
- 推流分辨率设置接口:setTargetResolution
- 预览分辨率设置接口:setPreviewResolution
关于编码方式的设置,Demo中,提供了三种编码方式:
- 硬编模式(同原有硬编,StreamerConstants.ENCODE_METHOD_HARDWARE)
- 软编模式 (支持所有GPU滤镜和自定义滤镜,性能较软编兼容模式有明显提升,StreamerConstants.ENCODE_METHOD_SOFTWARE)
- 软编兼容模式(同原有软编,为了兼容v3.x的软编模式,StreamerConstants.ENCODE_METHOD_SOFTWARE_COMPAT)
if (mHWButton.isChecked()) {
encodeMethod = StreamerConstants.ENCODE_METHOD_HARDWARE;
} else if (mSWButton.isChecked()) {
encodeMethod = StreamerConstants.ENCODE_METHOD_SOFTWARE;
} else {
encodeMethod = StreamerConstants.ENCODE_METHOD_SOFTWARE_COMPAT;
}
- 混淆文件proguard-project.txt,需要将原有关于class com.ksy.recordlib的所有处理都需要删除,只需要添加以下处理即可,参考Demo的proguard-project.txt
-dontskipnonpubliclibraryclassmembers
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-ignorewarnings
-verbose
-dontoptimize
-dontwarn
-keep class com.ksyun.** {
*;
}
-keep class com.ksy.statlibrary.** {
*;
}
参考CameraActivity的onCreate函数
mStreamer = new KSYStreamer(this); //创建kit实例
Bundle bundle = getIntent().getExtras(); //获取Demo中DemoActivity的参数
if (bundle != null) {
String url = bundle.getString(URL);
if (!TextUtils.isEmpty(url)) {
mUrl = url;
mUrlTextView.setText(mUrl);
mStreamer.setUrl(url); //设置推流url
}
int frameRate = bundle.getInt(FRAME_RATE, 0);
if (frameRate > 0) {
mStreamer.setPreviewFps(frameRate); //设置预览fps
mStreamer.setTargetFps(frameRate); //设置推流fps
}
int videoBitrate = bundle.getInt(VIDEO_BITRATE, 0);
if (videoBitrate > 0) {
//设置视频采样率
mStreamer.setVideoKBitrate(videoBitrate * 3 / 4, videoBitrate, videoBitrate / 4);
}
int audioBitrate = bundle.getInt(AUDIO_BITRATE, 0);
if (audioBitrate > 0) {
//设置音频采样率
mStreamer.setAudioKBitrate(audioBitrate);
}
int videoResolution = bundle.getInt(VIDEO_RESOLUTION, 0);
mStreamer.setPreviewResolution(videoResolution); //设置预览分辨率
mStreamer.setTargetResolution(videoResolution); //设置推流分辨率
int encode_method = bundle.getInt(ENCDODE_METHOD);
mStreamer.setEncodeMethod(encode_method); //设置编码方式
mIsLandscape = bundle.getBoolean(LANDSCAPE, false);
mStreamer.setRotateDegrees(mIsLandscape ? 90 : 0); //根据横竖屏设置rotateDegrees
if (mIsLandscape) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
mAutoStart = bundle.getBoolean(START_ATUO, false); //是否自动开始推流
mPrintDebugInfo = bundle.getBoolean(SHOW_DEBUGINFO, false); //是否输出debug信息
}
mStreamer.setDisplayPreview(mCameraPreviewView); //设置GlSurfaceView
mStreamer.enableDebugLog(true); //是否允许debug log输出,推流过程中可修改
mStreamer.setFrontCameraMirror(mFrontMirrorCheckBox.isChecked()); //是否前置摄像头镜像,推流过程中可修改
mStreamer.setMuteAudio(mMuteCheckBox.isChecked()); //静音,推流过程中可修改
mStreamer.setEnableAudioPreview(mAudioPreviewCheckBox.isChecked()); //耳返,推流过程中可修改
mStreamer.setOnInfoListener(mOnInfoListener);//设置状态变更回调
mStreamer.setOnErrorListener(mOnErrorListener);//设置错误变更回调
mStreamer.setOnLogEventListener(mOnLogEventListener); //设置日志上报回调接口
//mStreamer.setOnAudioRawDataListener(mOnAudioRawDataListener);
//mStreamer.setOnPreviewFrameListener(mOnPreviewFrameListener);
mStreamer.getImgTexFilterMgt().setFilter(mStreamer.getGLRender(),
ImgTexFilterMgt.KSY_FILTER_BEAUTY_DENOISE); //视频滤镜
mStreamer.setEnableImgBufBeauty(true); //开启美颜
//滤镜错误回调
mStreamer.getImgTexFilterMgt().setOnErrorListener(new ImgTexFilterBase.OnErrorListener() {
@Override
public void onError(ImgTexFilterBase filter, int errno) {
Toast.makeText(CameraActivity.this, "当前机型不支持该滤镜",
Toast.LENGTH_SHORT).show();
mStreamer.getImgTexFilterMgt().setFilter(mStreamer.getGLRender(),
ImgTexFilterMgt.KSY_FILTER_BEAUTY_DISABLE);
}
});
// touch focus and zoom support
CameraTouchHelper cameraTouchHelper = new CameraTouchHelper();
cameraTouchHelper.setCameraCapture(mStreamer.getCameraCapture());
mCameraPreviewView.setOnTouchListener(cameraTouchHelper);
// set CameraHintView to show focus rect and zoom ratio
cameraTouchHelper.setCameraHintView(mCameraHintView);