Giter Site home page Giter Site logo

fpzeng / ksystreamer_android Goto Github PK

View Code? Open in Web Editor NEW
730.0 57.0 211.0 221.46 MB

金山云Android采集推流SDK(Livestream SDK),支持内置/自定义美颜(Beauty Filter)、美声(Beauty Voice)、软硬编(Software/Hardware Encoder) 、网络自适应(Network Auto Adapt)、混音(Voice Mixer)、混响(Reverb)、画中画(PIP)、连麦(RTC)、动态贴纸(Sticker)、大眼瘦脸(Bigger Eyes and Smaller Faces)

Home Page: https://github.com/ksvc/KSYStreamer_Android/releases

Java 100.00%
livestream recorder beautyfilter

ksystreamer_android's Introduction

金山云直播推流Android SDK使用说明

KSY Streamer Android SDK是金山云推出的 Android 平台上使用的软件开发工具包(SDK),帮助开发者快速实现稳定的视频直播的采集和推流功能。

金山云直播SDK是金山云提供的直播解决方案的一部分,完成了Android端音视频数据采集、处理、推流和播放的工作,金山云直播SDK不限制用户的推流、拉流地址。用户可以只使用金山云直播SDK而不使用金山云的云服务。

金山云直播SDK不收取任何授权使用费用,不含任何失效时间或者远程下发关闭的后门。同时金山云直播SDK也不要求ak/sk等鉴权,没有任何用户标识信息。

金山云直播SDK提供了业内一流的H.265编码、解码能力,对500+款设备进行了兼容性测试,经受住了大量业内一流的APP长时间线上运行的考验,免费使用,欢迎试用评估。

1. 阅读对象

本文档面向所有使用 金山云直播SDK的开发、测试人员等, 要求读者具有一定的Android编程开发经验,并且要求读者具备阅读 wiki的习惯

2. 功能特点

3. 运行环境

  • 最低支持版本为Android 4.0 (API level 15)

  • 支持的CPU架构:armv7, arm64, armeabi, x86

Table 1. 软硬编部分功能对Android系统版本的要求及相关限制

软编

硬编

软编兼容模式

基础推流

4.4 (19)

4.3 (18)

4.0 (15)

网络自适应

4.4 (19)

4.4 (19)

4.0 (15)

内建美颜滤镜

所有

所有

仅Denoise

4. 版本说明

4.1. 迭代

当前版本为4.x,相对于v3.x有较大的变动,从3.x迁移的用户可参考:
3.x到4.0迁移说明

4.2. 直播SDK

KSYLive_Android集成了 libksyplayer,具有播放SDK直播的所有功能,并且集成了 KSYStreamer,具有推流SDK所有功能。

如果使用直播推流、播放功能,请使用 KSYLive_Android ,无需单独集成 KSYStreamer

4.3. 体系结构

当前推流 KSYStreamer支持以下体系结构:

  • armeabi

  • armeabi-v7a

  • arm64-v8a

  • x86

为了节省apk size,如果没有特殊缘由,请只集成armeabi-v7a版本。

只集成armeabi-v7a版本,会导致ARMv5 ARMv6 设备不能运行。如果APP需要适配这两类设备,需要额外集成armebi版本。

ARMv5 ARMv6 设备计算性能较差,金山云不保证该芯片设备上的直播体验。不推荐直播APP视频适配该两款芯片设备。

5. 快速集成

本章节提供一个快速集成金山云推流SDK基础功能的示例。
更详细的文档地址:https://github.com/ksvc/KSYStreamer_Android/wiki
具体可以参考demo工程中的相应文件。

5.1. 下载工程

5.1.1. 下载融合库

推荐使用融合库,融合库也会作为重点维护版本。

融合库国内镜像地址:https://git.oschina.net/ksvc/KSYLive_Android

5.1.2. 下载单独库

当前不支持单独推流库下载,请使用融合库:https://github.com/ksvc/KSYLive_Android

5.2. 工程目录结构

  • demo: 示例工程,演示本SDK主要接口功能的使用

  • libs: 集成SDK需要的所有库文件

    • libs/[armeabi-v7a|arm64-v8a|x86]: 各平台的so库

    • libs/ksylive.jar: 融合SDK jar包

5.3. 配置项目

引入目标库, 将libs目录下的库文件引入到目标工程中并添加依赖。

可参考下述配置方式(以Android Studio为例):

  • 导入SDK

    1. 推荐直接使用gradle方式集成:

      # required
      allprojects {
          repositories {
              jcenter()
          }
      }
      
      dependencies {
          # required, enough for most devices.
          compile 'com.ksyun.media:libksylive-java:3.0.0'
          compile 'com.ksyun.media:libksylive-armv7a:3.0.0'
      
          # Other ABIs: optional
          compile 'com.ksyun.media:libksylive-arm64:3.0.0'
          compile 'com.ksyun.media:libksylive-x86:3.0.0'
      }
    2. 手动下载集成

      • 将libs目录copy到目标工程的根目录下;

      • 修改目标工程的build.gradle文件,配置jniLibs路径:

        sourceSets {
            main {
                ...
                jniLibs.srcDir 'libs'
            }
            ...
        }
  • 修改proguard(混淆)文件,添加如下规则:

    -keep class com.ksyun.** {
      *;
    }
    
    -keep class com.ksy.statlibrary.** {
      *;
    }
  • 在AndroidManifest.xml文件中申请相应权限

    <!-- 使用权限 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_SINTERNETWIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <!-- 硬件特性 -->
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
  • 将demo assets目录下的资源文件copy到目标工程的assets目录下

5.4. 简单推流示例

具体可参考demo工程中的 com.ksyun.media.streamer.demo.CameraActivity 类.

  1. 在布局文件中加入预览View, 当前支持GLSurfaceView和TextureView

    <android.opengl.GLSurfaceView
        android:id="@+id/camera_preview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="true" />
  2. 初始化预览View

    GLSurfaceView mCameraPreview = (GLSurfaceView)findViewById(R.id.camera_preview);
  3. 创建KSYStreamer实例并配置推流相关参数

    // 创建KSYStreamer实例
    mStreamer = new KSYStreamer(this);
    // 设置预览View
    mStreamer.setDisplayPreview(mCameraPreview);
    // 设置推流url(需要向相关人员申请,测试地址并不稳定!)
    mStreamer.setUrl("rtmp://mobile.kscvbu.cn/live/{streamName}");
    // 设置预览分辨率, 当一边为0时,SDK会根据另一边及实际预览View的尺寸进行计算
    mStreamer.setPreviewResolution(480, 0);
    // 设置推流分辨率,可以不同于预览分辨率(不应大于预览分辨率,否则推流会有画质损失)
    mStreamer.setTargetResolution(480, 0);
    // 设置预览帧率
    mStreamer.setPreviewFps(15);
    // 设置推流帧率,当预览帧率大于推流帧率时,编码模块会自动丢帧以适应设定的推流帧率
    mStreamer.setTargetFps(15);
    // 设置视频码率,分别为初始平均码率、最高平均码率、最低平均码率,单位为kbps,另有setVideoBitrate接口,单位为bps
    mStreamer.setVideoKBitrate(600, 800, 400);
    // 设置音频采样率
    mStreamer.setAudioSampleRate(44100);
    // 设置音频码率,单位为kbps,另有setAudioBitrate接口,单位为bps
    mStreamer.setAudioKBitrate(48);
    /**
     * 设置编码模式(软编、硬编),请根据白名单和系统版本来设置软硬编模式,不要全部设成软编或者硬编,白名单可以联系金山云商务:
     * StreamerConstants.ENCODE_METHOD_SOFTWARE
     * StreamerConstants.ENCODE_METHOD_HARDWARE
     */
    mStreamer.setEncodeMethod(StreamerConstants.ENCODE_METHOD_SOFTWARE);
    // 设置屏幕的旋转角度,支持 0, 90, 180, 270
    mStreamer.setRotateDegrees(0);
    // 设置开始预览使用前置还是后置摄像头
    mStreamer.setCameraFacing(CameraCapture.FACING_FRONT);
  4. 创建推流事件监听

    Note

    所有回调均运行在KSYStreamer的创建线程,建议在主线程中进行,开发者可以直接在回调中操作 KSYStreamer的相关接口,但不要在这些回调中做任何耗时的操作。

    // 设置Info回调,可以收到相关通知信息
    mStreamer.setOnInfoListener(new KSYStreamer.OnInfoListener() {
        @Override
        public void onInfo(int what, int msg1, int msg2) {
            // ...
        }
    });
    // 设置错误回调,收到该回调后,一般是发生了严重错误,比如网络断开等,
    // SDK内部会停止推流,APP可以在这里根据回调类型及需求添加重试逻辑。
    mStreamer.setOnErrorListener(new KSYStreamer.OnErrorListener() {
        @Override
        public void onError(int what, int msg1, int msg2) {
            // ...
        }
    });
  5. 开始推流

    Note

    初次开启预览后需要在OnInfoListener回调中收到 StreamerConstants.KSY_STREAMER_CAMERA_INIT_DONE 事件后调用方才有效。
    (v4.2.1及之后的版本无此限制)

    mStreamer.startStream();
  6. 推流开始前及推流过程中可动态设置的常用方法

    // 切换前后摄像头
    mStreamer.switchCamera();
    // 开关闪光灯
    mStreamer.toggleTorch(true);
    // 设置美颜滤镜,关于美颜滤镜的具体说明请参见专题说明
    mStreamer.getImgTexFilterMgt().setFilter(mStreamer.getGLRender(),
                    ImgTexFilterMgt.KSY_FILTER_BEAUTY_DENOISE);
  7. 停止推流

    mStreamer.stopStream();
  8. Activity生命周期的回调处理

    public class CameraActivity extends Activity {
    
        // ...
    
        @Override
        public void onResume() {
            super.onResume();
            // 一般可以在onResume中开启摄像头预览
            mStreamer.startCameraPreview();
            // 调用KSYStreamer的onResume接口
            mStreamer.onResume();
            // 如果onPause中切到了DummyAudio模块,可以在此恢复
            mStreamer.setUseDummyAudioCapture(false);
        }
    
        @Override
        public void onPause() {
            super.onPause();
            mStreamer.onPause();
            // 一般在这里停止摄像头采集
            mStreamer.stopCameraPreview();
            // 如果希望App切后台后,停止录制主播端的声音,可以在此切换为DummyAudio采集,
            // 该模块会代替mic采集模块产生静音数据,同时释放占用的mic资源
            mStreamer.setUseDummyAudioCapture(true);
        }
    
        @Override
        public void onDestroy() {
            super.onDestroy();
            // 清理相关资源
            mStreamer.release();
        }
    }

7. FAQ

8. 反馈与建议

8.1. 反馈模板

类型   描述

SDK名称

KSYLive_android

SDK版本

v2.5.0

设备型号

oppo r9s

OS版本

Android 6.0.1

问题描述

描述问题出现的现象

操作描述

描述经过如何操作出现上述问题

额外附件  

文本形式控制台log、crash报告、其他辅助信息(界面截屏或录像等)

8.2. 联系方式

金山云计算

ksystreamer_android's People

Contributors

buliaoyin avatar chriszeng87 avatar fpzeng avatar ksysdkci avatar matoude1234567 avatar matrix18 avatar pengbins avatar tian9246 avatar xiaofeizan avatar xingkai509 avatar zanxiaofei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ksystreamer_android's Issues

部分机型音视频不同步

您好,在使用sdk推流的时候,在少部分机型会出现声音比嘴型快几秒的问题,不知有没有调校的接口呢,谢谢!

java.lang.UnsatisfiedLinkError

java.lang.UnsatisfiedLinkError
No implementation found for java.util.List com.ksy.recordlib.service.hardware.ksyfilter.KSYCredtpWrapper.getContentList() (tried Java_com_ksy_recordlib_service_hardware_ksyfilter_KSYCredtpWrapper_getContentList and Java_com_ksy_recordlib_service_hardware_ksyfilter_KSYCredtpWrapper_getContentList__)

com.ksy.recordlib.service.hardware.ksyfilter.KSYCredtpWrapper.java.util.List getContentList()(Native Method)

com.ksy.recordlib.service.hardware.ksyfilter.KSYCredtpWrapper.void ()(Unknown Source)

com.ksy.recordlib.service.hardware.ksyfilter.KSYCredtpWrapper.com.ksy.recordlib.service.hardware.ksyfilter.KSYCredtpWrapper a()(Unknown Source)

魅族Pro5推流手机浏览黑屏,但是流有画面

Android版本:5.1 没有root 固件版本Flyme5.6.8.23 beta

log信息警告:
08-25 18:11:38.971 12656-13021/com.ksyun.live.demo W/KSYMediaPlayer: AVFrame.width or height is not set
08-25 18:11:39.031 12656-13021/com.ksyun.live.demo W/KSYMediaPlayer: AVFrame.format is not set

关于延迟的问题

在网络情况较差的条件下,如何解决延迟问题呢,我这边考虑丢包的方法,这块代码是否开放呢

希望能尽快回复一下。invalid argument经常出现这个问题

我接入了金山云直播的推流器。按照demo里面写的。为什么上传不稳定。经常断线。还有经常返回这个invalid argument错误。断开连接。

videoBitrate = 800;
videoResolution = RecorderConstants.VIDEO_RESOLUTION_540P;
encode_method = KSYStreamerConfig.ENCODE_METHOD.SOFTWARE;
landscape = false;
isFrontCameraMirror = true;
focus_manual = false;
GLSurfaceView mCameraPreview = (GLSurfaceView)findViewById(R.id.camera_preview);
KSYStreamerConfig.Builder builder = new KSYStreamerConfig.Builder();
// builder.setmUrl(Live_PUSH);
builder.setFrameRate(15);
//设置最高码率,即目标码率
builder.setMaxAverageVideoBitrate(videoBitrate);
//设置最低码率
builder.setMinAverageVideoBitrate(videoBitrate * 2 / 8);
//设置初始码率
builder.setInitAverageVideoBitrate(videoBitrate * 5 / 8);

  if (audioBitrate > 0) {
     builder.setAudioBitrate(audioBitrate);
  }

  builder.setVideoResolution(videoResolution);

  builder.setEncodeMethod(encode_method);

  builder.setSampleAudioRateInHz(44100);
  builder.setEnableStreamStatModule(true);

  builder.setDefaultLandscape(landscape);

  builder.setFrontCameraMirror(isFrontCameraMirror);
  builder.setManualFocus(focus_manual);

  builder.setIsSlightBeauty(false);

  mStreamer = new KSYStreamer(this);
  mStreamer.setConfig(builder.build());
  mStreamer.setDisplayPreview(mCameraPreview);
  mStreamer.setOnStatusListener(mOnErrorListener);
  mStreamer.setBeautyFilter(RecorderConstants.FILTER_BEAUTY_DENOISE);

这个是我的所有参赛配置。
mStreamer.updateUrl(content);是在网络请求后会。可以连接上。但是不是很稳定。经常断。连上了还会断线。请问下是哪里的问题。是因为金山云要收费吗??

jnilibs缺少armeabi和x86_64

作为一个lib库,请提供尽量完整的so库配置,由用户来选择是否使用,多谢,我们现在需要标题上面的两种so,能否尽快在lib中提供?

部分机器推流出现噪音

1.有些机器在推流的时候产生噪音,在播放端也能听到这个噪音。出现的机型有小米4,红米1s等米系列。以及锤子坚果。采用的是软编。音频采样率44100。音频码率32.
2.然后发现有些机器在硬编码前提下。重复进行直播会卡死或者奔溃(疑似相机未关闭或者未释放),结束后已经调用停止推流的方法。(比如华为mate7)
望解答!thx!

硬编崩溃

手机是 huawei Che2-UL00 api19
推流几秒钟就挂了
IllegalStateException:
at MediaCodec.getBuffers(Native method)
...
at com.ksy.recordlib.service.hardware.a.a
at com.ksy.recordlib.service.hardware.m.run

拉近拉远时闪退

mCamera = mStreamer.getCameraProxy().j();

Camera.Parameters params = mCamera.getParameters();
params.setZoom(mZoomLeve);
mCamera.setParameters(params);
在切换成后置摄像头后变焦闪退,请问如何解决

java.lang.UnsatisfiedLinkError是什么原因

我在尝试推流的时候,报错
08-09 18:59:56.531 14311-14448/cn.camhow.zhibo E/art: No implementation found for java.lang.String com.ksy.recordlib.service.stats.StreamLogWrapper.getLogAccessKeyNative() (tried Java_com_ksy_recordlib_service_stats_StreamLogWrapper_getLogAccessKeyNative and Java_com_ksy_recordlib_service_stats_StreamLogWrapper_getLogAccessKeyNative__)
08-09 18:59:56.531 14311-14448/cn.camhow.zhibo E/AndroidRuntime: FATAL EXCEPTION: Thread-1011
Process: cn.camhow.zhibo, PID: 14311
java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String com.ksy.recordlib.service.stats.StreamLogWrapper.getLogAccessKeyNative() (tried Java_com_ksy_recordlib_service_stats_StreamLogWrapper_getLogAccessKeyNative and Java_com_ksy_recordlib_service_stats_StreamLogWrapper_getLogAccessKeyNative__)
at com.ksy.recordlib.service.stats.StreamLogWrapper.getLogAccessKeyNative(Native Method)
at com.ksy.recordlib.service.stats.StreamLogWrapper.c(Unknown Source)
at com.ksy.recordlib.service.stats.b.run(Unknown Source)
at java.lang.Thread.run(Thread.java:818)

设置美声(混响)没有效果

设置美声(混响)没有效果,用耳听不出设置前后区别

mStreamer.setEnableReverb(true);
设置美声级别(level:1 - 4)各个level对应不同美声效果
悠扬(level:1),空灵(level:2),KTV效果(level:3,4)
mStreamer.setReverbLevel(3);

直播的声音好小

直播的声音好小,有办法提高播放端的音量大小吗?增益功能有吗?

可否预设后摄像头?

请问如何在初始化完成后直接开启后摄像头
case RecorderConstants.KSYVIDEO_INIT_DONE:
mStreamer.switchCamera();

这样子会有点卡顿
有没有直接开启后摄像头的方法?

Monkey测试一定概率Crash问题(或者内存回收)

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.opengl.GLSurfaceView.setLayoutParams(android.view.ViewGroup$LayoutParams)' on a null object reference
at com.ksy.recordlib.service.core.h.p(Unknown Source)
at com.ksy.recordlib.service.core.h.m(Unknown Source)
at com.ksy.recordlib.service.core.h$a.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5628)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)

Net not good

怎么判断当前网络彻底推不上去流了,提示Net not good了 还在推么,现在就是网络彻底推不上流了就会崩溃,求大神指点

红米DTS out of order问题

[live_flv @ 0000000000601f60] DTS 5789 < 178328 out of order f=0/0
Metadata:-V: -3.701 fd= 48 aq= 0KB vq= 0KB sq= 0B f=1/1
Server NGINX RTMP (github.com/arut/nginx-rtmp-mod
width 1280.00
height 720.00
displayWidth 1280.00
displayHeight 720.00
duration 0.00
framerate 24.00
fps 24.00
videodatarate 1831.00
videocodecid 7.00
audiodatarate 31.00
audiocodecid 10.00
[live_flv @ 0000000000601f60] DTS 65 < 38123 out of order0B f=1/1
Metadata:-V: -3.251 fd= 52 aq= 0KB vq= 0KB sq= 0B f=2/2
Server NGINX RTMP (github.com/arut/nginx-rtmp-mod
width 1280.00
height 720.00
displayWidth 1280.00
displayHeight 720.00
duration 0.00
framerate 24.00
fps 24.00
videodatarate 1831.00
videocodecid 7.00
audiodatarate 31.00
audiocodecid 10.00
[live_flv @ 0000000000601f60] DTS 79 < 7482 out of order 0B f=2/2
Metadata:-V: -3.714 fd= 54 aq= 0KB vq= 0KB sq= 0B f=3/3
Server NGINX RTMP (github.com/arut/nginx-rtmp-mod
width 1280.00
height 720.00
displayWidth 1280.00
displayHeight 720.00
duration 0.00
framerate 24.00
fps 24.00
videodatarate 1831.00
videocodecid 7.00
audiodatarate 31.00
audiocodecid 10.00
[live_flv @ 0000000000601f60] DTS 59 < 22537 out of order0B f=3/3
Metadata:-V: -2.951 fd= 54 aq= 0KB vq= 0KB sq= 0B f=4/4
Server NGINX RTMP (github.com/arut/nginx-rtmp-mod
width 1280.00
height 720.00
displayWidth 1280.00
displayHeight 720.00
duration 0.00
framerate 24.00
fps 24.00
videodatarate 1831.00
videocodecid 7.00
audiodatarate 31.00
audiocodecid 10.00
[live_flv @ 0000000000601f60] DTS 82 < 20017 out of order0B f=4/4
2.07 A-V: 0.312 fd= 54 aq= 0KB vq= 0KB sq= 0B f=5/5

我用红米再测试demo code时常会出现 "[live_flv @ 0000000000601f60] DTS 82 < 20017 out of order0B f=4/4" 的错误资讯,时间久了之后就会有声无影,请问要如何解决?感激不尽。

推流时很频繁遇到的错误:KSYVIDEO_CONNECT_BREAK

09-23 15:27:40.590 18540-30676/com._.debug E/KSYMediaPlayer: Application provided invalid, non monotonically increasing dts to muxer in stream 1: 427534 >= 426854
09-23 15:27:40.590 18540-30676/com.
.debug E/streamer: ------av_interleaved_write_frame() error:-22 while writing interleaved audio frame
09-23 15:27:40.590 18540-30676/com.**
.debug W/StreamLogReportManger: on status changed :-1007
09-23 15:27:40.017 18540-30676/com._.debug I/System.out: 460007832152498
09-23 15:27:40.018 18540-30676/com.
.debug I/StreamLogReportManger: stopStream :true
09-23 15:27:40.018 18540-30676/com.**
.debug E/LiveStreamActivity: [audio_encode_thread]the streaming stopped because KSYVIDEO_CONNECT_BREAK

以上是最近测试中经常碰到的错误,推流时网络正常,是我使用API的问题呢?还是sdk的bug呢?其他开发者有碰到这个问题吗?

关于64位手机的问题

我们是把播放 跟 推流集成在一起了 android端 播放有个文件夹arm64-v8a 里面放了64位机器用到的so文件。 但是推流端没有这个文件夹。导致的问题是 64位机器上推流的时候找这个文件夹的so文件 ,找不到推流的用到的so文件 所以就报错了。 请问该如何解决

横屏推流没声音问题

我测试过程中,竖屏推声音正常,横屏推的时候抛出
-------audio start failed

                                                           [ 08-17 14:22:25.575   312:  312 D/         ]
                                                           criticallogService::ACTION_REQUEST_WRITE_RAW,size:213, content is  <multimedia-audio_record_fail-begin>
                                                           LOGTYPE:202
                                                           log-time: 2016-08-17 14:22:25
                                                           log-buildTime: A33_11_A.08_160131
                                                           log-colorOS: V2.1
                                                           start Input failed,other input already started
                                                           <multimedia-audio_record_fail-end>

the streaming stopped because KSYVIDEO_AUDIO_START_FAILED

是什么原因引起 麻烦

报错

我在错误上报中看到这样一个错误:

Fatal Exception: java.lang.RuntimeException
draw start: glError 0x502

com.ksy.recordlib.service.streamer.preview.c.a (Unknown Source)
com.ksy.recordlib.service.hardware.ksyfilter.KSYImageFilter.a (Unknown Source)
com.ksy.recordlib.service.hardware.l.onDrawFrame (Unknown Source)
android.opengl.GLSurfaceView$GLThread.guardedRun (GLSurfaceView.java:1523)
android.opengl.GLSurfaceView$GLThread.run (GLSurfaceView.java:1240)

帧率疑问

设置了帧率为24,但实际测试只有10以内,请问是什么原因导致,谢谢!

关于64位机子的问题

请提供64位机子的so文件。因为app中集成了其他第三方的64位库。导致我们在arm64文件夹中没有so文件,程序崩溃!

我用的最新的demo和jar包、so库,结果还是出现UnsatisfiedLinkError

请问是什么原因呢:
No implementation found for java.util.List com.ksy.recordlib.service.hardware.ksyfilter.KSYCredtpWrapper.getContentList() (tried Java_com_ksy_recordlib_service_hardware_ksyfilter_KSYCredtpWrapper_getContentList and Java_com_ksy_recordlib_service_hardware_ksyfilter_KSYCredtpWrapper_getContentList__)
08-15 14:07:13.580 1808-1808/com.geo.ksmdemo E/AndroidRuntime: FATAL EXCEPTION: main
08-15 14:07:13.580 1808-1808/com.geo.ksmdemo E/AndroidRuntime: Process: com.geo.ksmdemo, PID: 1808
08-15 14:07:13.580 1808-1808/com.geo.ksmdemo E/AndroidRuntime: java.lang.UnsatisfiedLinkError: No implementation found for java.util.List com.ksy.recordlib.service.hardware.ksyfilter.KSYCredtpWrapper.getContentList() (tried Java_com_ksy_recordlib_service_hardware_ksyfilter_KSYCredtpWrapper_getContentList and Java_com_ksy_recordlib_service_hardware_ksyfilter_KSYCredtpWrapper_getContentList__)
08-15 14:07:13.580 1808-1808/com.geo.ksmdemo E/AndroidRuntime: at com.ksy.recordlib.service.hardware.ksyfilter.KSYCredtpWrapper.getContentList(Native Method)
08-15 14:07:13.580 1808-1808/com.geo.ksmdemo E/AndroidRuntime: at com.ksy.recordlib.service.hardware.ksyfilter.KSYCredtpWrapper.(Unknown Source)
08-15 14:07:13.580 1808-1808/com.geo.ksmdemo E/AndroidRuntime: at com.ksy.recordlib.service.hardware.ksyfilter.KSYCredtpWrapper.a(Unknown Source)
08-15 14:07:13.580 1808-1808/com.geo.ksmdemo E/AndroidRuntime: at com.ksy.recordlib.service.hardware.ksyfilter.KSYImageFilter.(Unknown Source)
08-15 14:07:13.580 1808-1808/com.geo.ksmdemo E/AndroidRuntime: at com.ksy.recordlib.service.hardware.ksyfilter.b.(Unknown Source)
08-15 14:07:13.580 1808-1808/com.geo.ksmdemo E/AndroidRuntime: at com.ksy.recordlib.service.hardware.ksyfilter.r.a(Unknown Source)
08-15 14:07:13.580 1808-1808/com.geo.ksmdemo E/AndroidRuntime: at com.ksy.recordlib.service.core.h.setBeautyFilter(Unknown Source)
08-15 14:07:13.580 1808-1808/com.geo.ksmdemo E/AndroidRuntime: at com.ksy.recordlib.service.core.KSYStreamer.setBeautyFilter(Unknown Source)

msg Broken pipe 问题

金山推流 过程中 有时候msg Broken pipe 有时候 connect time out
是网络原因么?还是啥原因
能提供msg 信息对应一些具体原因么

水印咨询

showWaterMarkLogo 如何指定asserts 目录下水印,谢

一个报错

Fatal Exception: java.lang.IllegalStateException

android.media.MediaCodec.getBuffers (MediaCodec.java)
android.media.MediaCodec.getOutputBuffers (MediaCodec.java:551)
com.ksy.recordlib.service.hardware.a.a (Unknown Source)
com.ksy.recordlib.service.hardware.m.run (Unknown Source)
java.lang.Thread.run (Thread.java:841)

感觉是用户的手机存储空间不够引发的?

推流地址url不能重新设置问题

推流地址一定要进入页面就设置吗?不能进入当前直播页面打开摄像头进入预览状态,然后通过服务后台申请后得到推流地址再设置!如果再开一个预览界面,然后打开直播界面,这样两次打开的操作(第一次已经destroy了),还是会出现刚进入直播页面打开摄像头失败的问题,然后切换下摄像头又好了。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.