-
Notifications
You must be signed in to change notification settings - Fork 209
FAQ
可以。
详细参考:
可以。
通过接口setOnPreviewFrameListener
拿到视频的原始数据,在回调onPreviewFrame中可以自己生成图片。
v4.0版本即将添加截图功能
mStreamer.setOnPreviewFrameListener(new OnPreviewFrameListener() {
@Override
public void onPreviewFrame(byte[] data, int width, int height, boolean isRecording) {
YuvImage image = new YuvImage(data, ImageFormat.NV21, width, height, null);
Bitmap bmp = null;
if(image!=null){
ByteArrayOutputStream stream = new ByteArrayOutputStream();
image.compressToJpeg(new Rect(0, 0, width, height), 80, stream);
bmp = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
//生成的图片时bmp,可以使用这个图片进行想要的操作
final Bitmap finalBmp = bmp;
mHandler.post(new Runnable() {
@Override
public void run() {
imgV.setImageBitmap(finalBmp);
}
});
}
支持。
主播声音调节 用KSYStream的接口setVoiceVolume
背景音乐调节调用代码 KSYBgmPlayer.setVolume(bgmVolume);
的接口,参考背景音乐
如果希望独立调节混音后背景音乐的声音,需要调用KSYStream的setHeadsetPlugged(true)
该接口设置为false的话,不会对背景音乐进行混音
- v3.x在推流前通过KSYStreamerConfig的接口
mAutoAdjustBitrate
来配置是否支持码率自适应 - v4.x在推流前通过KSYStreamer的接口
setVideoBitrate
来配置是否支持码率自适应,参考参数设置中的[视频码率及码率自适应]章节
3.3.1.0 以前的版本 硬编默认是自动调整码率,也就是
mAutoAdjustBitrate
被强制置为true。3.3.1.0以后软硬编都可以通过上面的接口配置
不会,带宽不够的情况,会发生丢包的情况。
####v3.x: KSYVIDEO_OPEN_CAMERA_FAIL、KSYVIDEO_CAMERA_PARAMS_ERROR、KSYVIDEO_AUDIO_START_FAILED ####v4.x: KSY_STREAMER_CAMERA_ERROR_UNKNOWN、KSY_STREAMER_CAMERA_ERROR_START_FAILED、KSY_STREAMER_AUDIO_RECORDER_ERROR_START_FAILED 会上报这些错误,这几种错误都是Camera或者AudioRecord 初始化失败导致的,造成其初始化失败的可能原因有下面几种:
- 没有摄像头或者录音权限
- 推流初始化销毁时序有问题,上一次的推流并没有完全销毁,就开始下一次推流(此种情况,最好好好整理一下逻辑,是否严格按照Demo中的时序进行的)
- 推流开始结束操作过于频繁(在v3.x的版本上,不建议在1s以内频繁的操作,v4.x没有这种限制)
v3.x支持,设置方法参考PIP v4.x不支持
- 3.X不支持,只能全屏
- 4.X版本支持,您可以设置自己的GlSurfaceView的大小
- 32797 RTMP发起推流失败,一般流名重复或者网络不佳会造成
- 32795 DNS解析失败,一般流名重复或者网络不佳会造成
- 32796 连接服务器失败
08-23 16:03:00.305 6355-6892/com.cnlive.libs W/System.err: java.lang.RuntimeException: setParameters failed 08-23 16:03:00.305 6355-6892/com.cnlive.libs W/System.err: at android.hardware.Camera.native_setParameters(Native Method) 08-23 16:03:00.305 6355-6892/com.cnlive.libs W/System.err: at android.hardware.Camera.setParameters(Camera.java:1773) 08-23 16:03:00.305 6355-6892/com.cnlive.libs W/System.err: at com.ksy.recordlib.service.hardware.CameraEncoder.e(Unknown Source) 08-23 16:03:00.305 6355-6892/com.cnlive.libs W/System.err: at com.ksy.recordlib.service.hardware.CameraEncoder.E(Unknown Source) 08-23 16:03:00.305 6355-6892/com.cnlive.libs W/System.err: at com.ksy.recordlib.service.hardware.CameraEncoder.d(Unknown Source) 08-23 16:03:00.305 6355-6892/com.cnlive.libs W/System.err: at com.ksy.recordlib.service.hardware.CameraEncoder.a(Unknown Source) 08-23 16:03:00.305 6355-6892/com.cnlive.libs W/System.err: at com.ksy.recordlib.service.hardware.CameraEncoder$a.handleMessage(Unknown Source) 08-23 16:03:00.305 6355-6892/com.cnlive.libs W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102) 08-23 16:03:00.310 6355-6892/com.cnlive.libs W/System.err: at android.os.Looper.loop(Looper.java:136) 08-23 16:03:00.310 6355-6892/com.cnlive.libs W/System.err: at com.ksy.recordlib.service.hardware.CameraEncoder.run(Unknown Source) 08-23 16:03:00.310 6355-6892/com.cnlive.libs W/System.err: at java.lang.Thread.run(Thread.java:841)
- v3.x切换到后台会停止音视频采集,网络链接超时一般30s(服务端可配置)如果超时时间内切换回来,继续推流,超过30s得重连。
- v4.x切换到后台后会继续音频推流,停止视频推流,恢复到前台时,恢复音视频推流
当前版本暂时不支持
4.x版本即将支持
预览没有镜像,只有拉流端才能看到镜像效果
3.3.1.0以上版本(包含4.x)支持镜像在推流过程中可以动态调整
- v3.x 动态调整镜像接口:KSYStreamer.setEnableCameraMirror
- v4.x 动态调整镜像接口:KSYStreamer.setFrontCameraMirror
不是
SDK内部对于推流地址没有做限制
- 3.x 线上版本支持两种方式设置,一是设置绝对路径;二是直接设置在assert目录下面的文件名即可。逻辑上会先按照绝对路径的方式decode,失败的情况下会去assert目录找
- 4.x 如果是sdcard目录下面的需要指定前缀
file://
如果是assert目录下面的需要指定asserts://
前缀 参考水印
一般都是因为网络状态不佳导致的
可以
- v3.x 通过接口
KSYStreamer.updateUrl(newUrl);
- v4.x 通过接口
KSYStreamer.newUrl(newUrl);
以上接口只有在下一次调用startStream才会生效
- v3.x 不可以
- v4.x 会继续音频推流
硬编不是所有机型都OK,金山商务可以提供白名单。
SDK暂时不直接提供白名单的功能,在接下来三四个版本后,会提供白名单
v4.x 在部分机型上会硬编不支持的情况下fallback到软编
可以
通过接口KSYStreamer.getUploadedKBytes()
v4.x 在不允许日志上报时,该接口返回0
不需要授权
不收费
完全免费
非常欢迎跟我们的服务一起使用
使用接口KSYStreamer.isFrontCamera
可以获取当前是否是前置摄像头
- v3.x 默认后置摄像头:KSYStreamerConfig的setDefaultFront设置为false
- v4.x 通过KSYStreamer的接口setCameraFacing来设置,参考javadoc
目前只支持aac
- v3.x 版本当前支持,但是并没有大规模测试,不推荐您使用。如果着急使用,可以联系商务。
- v4.x 版本暂时不支持,后续会添加
支持
SDK内部不会做自动重连,APK可以自定义重连策略,可以参考demo进行重连,如下wiki地址有更详细的解释:
异常重连
支持
支持,可以调用mStreamer.setVoiceVolume(0.0f),此时麦克风的输入被静音,背景音乐不受影响。
横屏设置方法
mStreamer.setRotateDegrees(90);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
竖屏设置方法
mStreamer.setRotateDegrees(0);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
支持
调用
mStreamer.getImgTexMixer().setPreviewMirror(0, true);
import android.media.AudioManager;
public class CameraActivity extends Activity implements ActivityCompat.OnRequestPermissionsResultCallback {
...
private AudioManager mAudioManager;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
...
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
...
case KeyEvent.KEYCODE_VOLUME_UP:
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
break;
case KeyEvent.KEYCODE_VOLUME_DOWN:
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
break;
...
}
return true;
}
}