Video FAQ

常见问题

  1. 实时视频SDK支持自采集音视频吗?

    答:支持的,可以采用外部采集模式,由业务端自己采集音视频,然后把数据传入SDK,在init之前调用。

  2. 是否支持H.265编解码?

    答:sdk主要走H.264,因为目前sdk主要运用与移动通讯场景比较多,且265对性能要求比较高,需要考虑一些硬件设备,像移动设备性能可能没法支撑,如果客户有特殊需求专门走H.265,需要联系引擎组单独开适配。

  3. RN版本的通过配置从GitHub导入时下载很慢,是否还能通过什么方式导入呢?

    答:可以采用本地导入方式:

    运行 yarn
    再运行 yarn add /Users/youmedev/Desktop/react-native-youme --save  从本地导入依赖      //其中/Users/youmedev/Desktop/react-native-youme为本地存放sdk路径
  4. 两个用户加入了视频会议频道,但相互都看不到对方视频画面?

    答:可以检查用户是否加入的相同频道,用户加入后,是否设置了订阅远端视频流。

  5. 电脑屏幕共享时,1280*720的分辨率,感觉清晰度非常低,有什么办法解决吗?

    答:可以调整一下码率,如果电脑本身的分辨率在1920*1080 或大于1080p,建议共享分辨率调整为1080p。

  6. iOS共享屏幕如何实现?

    答:受iOS的系统限制,iOS实现屏幕共享,需要添加额外的拓展:点击 file -> new -> Target -> Broadcast Upload Extension添加拓展,会同时添加拓展的UI,需要在拓展里再次导入一遍Video SDK,并需要初始化SDK init、设置共享分辨率、帧率、加入房间操作,然后调用系统的共享接口,获取到屏幕共享数据,调用inputPixelBufferShare 传输给到sdk。

  7. 为什么开启共享之后没对端没有收到共享数据,自己也没有收到回调?

    答:1.检查是否初始化sdk成功;
    2.检查初始化成功后是否加入了房间;
    3.检查调用了初始化共享接口;
    4.检查是否弹出了共享权限框,并点击允许;
    5.是否开始共享之前设置了共享分辨率setVideoNetResolutionForShare和帧率setVideoFpsForShare

  8. 局域网传输为什么两个设备加入房间之后没反应?

    答:设置p2p局域网传输需要在加入房间之前设置本端和远端ip、端口,远端和本端需要同时加入相同频道,并且前后加入的时间需要在4秒以内。

  9. 输出的回调数据是什么格式的?

    答:如果开启了硬编解码默认回调opengl纹理方式,如果想要获取回调的是yuv格式的,需要设置setVideoFrameRawCbEnabled(true)该接口

  10. 初始化的时候报了这个错 java.lang.UnsatisfiedLinkError: No implementation found for void om.youme.voiceengine.NativeEngine.init 错误

    答:这个一般是加载so库出现问题,可以检查一下so库是否导入到了apk里,YouMeManager.Init(this);需要添加在 主activity的super.onCreate(savedInstanceState)前面。

  11. 实时视频通话过程中,要是丢失多少包或者丢失多少的关键帧会感官到卡顿不流畅的现象呢?

    答:a)正常来说,我们在一般丢包场景下(30%以下),对用户来说是无感知的,SDK内部有抗弱网策略,可以动态调整码率/帧率,保持视频流畅性;
    b)如果有突发高丢包情况下,确实丢关键帧了,SDK为了保证视频不出现花屏,直到下一个I帧过来才会继续解码渲染(这里SDK有FIR,当接收端出现丢帧时,会向发送端请求I帧,一般1s以内会继续解码渲染)。

  12. 屏幕共享时如何把系统声音一起共享过去呢?

    答:现在共享屏幕同时共享系统声音的应该只有ios平台可以支持;Android的目前受系统限制,没法获取到系统声音数据,无法实现随共享屏幕一起传到远端。

  13. 视频通话中,关闭了与会者的麦克风,但其还是有能说话的语音权限

    答:不允许说话的与会者加入频道时传听众身份,需要发言时,通过接口setUserRole来切换其身份,然后打开麦克风。
    语音SDK 加入房间后 返回消息顺序是 (加入成功后默认麦克风是关闭的) :
    YOUME_EVENT_LOCAL_SPEAKER_OFF = 32, ///< 自己的扬声器关闭
    YOUME_EVENT_LOCAL_MIC_OFF = 30, ///< 自己的麦克风关闭
    YOUME_EVENT_REC_PERMISSION_STATUS= 12, ///< 通知录音权限状态
    YOUME_EVENT_JOIN_OK = 2, ///< 进入语音频道成功
    视频SDK加入房间后 返回消息顺序是( 加入成功后默认麦克风是打开的 ):
    YOUME_EVENT_OTHERS_VIDEO_INPUT_START= 209, ///< 其他用户视频输入开始
    YOUME_EVENT_LOCAL_SPEAKER_OFF= 32, ///< 自己的扬声器关闭
    YOUME_EVENT_LOCAL_MIC_ON= 29, ///< 自己的麦克风打开
    YOUME_EVENT_REC_PERMISSION_STATUS= 12, ///< 通知录音权限状态
    YOUME_EVENT_JOIN_OK= 2, ///< 进入语音频道成功

  14. Video SDK是只实现了视频通话相关的关键模块吗?前置的信令,如用户A向B拨打视频邀请,B收到邀请后同意或者拒绝,SDK可以实现吗?

    答:SDK是加入相同频道就可以相互通话,呼叫信令需要业务端实现,可以通过IM SDK发送自定义消息来处理前置的拨打。

  15. 设置了音频数据回调,听不到声音。

    答:设置了音频数据回调,并仍采用sdk进行播放,调用setPcmCallbackEnable接口时需要对参数bOutputToSpeaker传值true,表示开启音频输出设备。

  16. iOS系统模拟器,打开视频时崩溃。

    答:模拟器和真机使用的库不一样,建议使用真机调试。

  17. iOS系统,加入频道后设置了声音从听筒接,为什么自动切回了扬声器?

    答:音频默认从扬声器输出,如果要切换需要在加入成功后设置。另外,如果当前是释放麦克风的状态,由于iOS系统限制,无法切换至听筒。

频道相关问题

  1. 如何创建和删除音视频通话频道呢?

    答:频道RoomID是由业务端自定义传值给到joinChannelSingleMode,第一个用户加入成功时就会自动创建并加入到该频道,此时其他用户加入到该相同频道ID中,就能够实现相互通话和收听;若该频道所有用户都退出了,该频道就消失了,就相当于删除了。

  2. 如果已经进入A频道,再进入B频道,最终会进入到哪个频道?

    答:如果我们调用的是joinChannelSingleMode加入频道,则会是互斥的,一个时刻只能在一个频道内,因为接口是异步操作接口,会以最后返回加入成功的频道为最终加入的频道。

  3. 如果因为某些原因,多次重复调用加入同一频道的操作(或离开频道等类似情况),而没有退出,会怎样?

    答:虽然SDK会让你后面的不合理的函数(重复加入相同频道等)操作直接返回失败,但游戏方应该做好状态管理,去积极避免这种不必要的情况发生。

  4. 我们语音频道能支持多少人同时在线,可以同时支持多少人同时开启摄像头和麦克风,只收看和收听的观众可以支持多少人呢?

    答:单频道默认可以支持一万人同时在线,同一时刻开启摄像头推流的人数最大支持16人,开启麦克风可以最大可支持32人,而收看和收听人数技术上可以不设上限,默认在一万以内。

  5. 网络切换或网络不好的时候,SDK会自动重连吗,需要自己重新加入语音频道么?SDK 会强行让用户自动退出频道么?

    答:SDK不会让用户自动退出频道,除非用户自己调用了leaveAllChannel自主离开;而SDK会自动重连机制,开始重连时会有回调YOUME_EVENT_RECONNECTING通知, 收到YOUME_EVENT_RECONNECTED则表示重连成功,一般网络恢复都能重连成功。

  6. 使用自己appkey创建的房间,别的appkey的用户可以进入吗?

    答:不可以,相同appkey才可以相互通讯。

摄像头、麦克风等设备状态相关问题

  1. 如何获取到频道内其他用户的开关扬声器、麦克风、摄像头事件通知?

    答:可以设置setAutoSendStatus该接口,通知别人自己的麦克风扬声器的开关状态;用户开关摄像头时,其他用户回收到相应的其他用户开关摄像头状态通知,OnEvent里会返回其他用户视频开始输入YOUME_EVENT_OTHERS_VIDEO_INPUT_START、其他用户视频输入停止YOUME_EVENT_OTHERS_VIDEO_INPUT_STOP 的通知事件。

video H5

  1. 兼容性情况。

    • 语音
      Android端微信内置浏览器都兼容; Android端Google浏览器或Google内核浏览器;
      iOS 14.3 微信 8.0.2 语音互通;
      iOS 13.7 微信 7.0.18 语音互通;
      iOS 11.3.1 微信 8.0.2 支持听语音,不支持发语音;
      iOS 浏览器仅支持 safari浏览器。
    • 视频
      Android端微信内置浏览器可支持;
      Android端Google浏览器或者Google内核浏览器;
      iOS上微信内置浏览器基本不支持视频互通,建议引导用户safari浏览器打开。
  2. H5通讯页面,切换到别的标签页后,提示Timeout。

    答:如果能保持给服务器发送心跳,不会timeout。切换了标签页,如果内存不够或其他异常导致后台进程被杀,心跳断开就会发生timeout。