• webrtc 记录tips


    1. 除特殊需求只有一个pc对象

    android出现了No implementation found for void org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData 问题
    原因是安卓平台只支持一个音视频模块The reason is that only one audio device module supported on Android.,

    2. 如何使分辨率保持不变

    1. RTCConfiguration enableCpuOveruseDetection=false 关闭分辨率变换; 还可以调整源码来实现(包括但不限于固定帧率、定分辨率、自适应调整策略)

    关于webrtc中,会根据想要的传输码率来调整 视频分辨率,视频帧率,编码等级, 影响编码码率
    核心参数有

    • sdp中的
    1. x-google-max-bitrate 单位bps,下同, 视频码流最大值,当网络特别好时,码流最大能达到这个值,如果不设置这个值,网络好时码流会非常大
    2. x-google-min-bitrate 视频码流最小值,当网络不太好时,WebRTC的码流每次5%递减,直到这个最小值为,如果没有设置这个值,网络不好时,视频质量会非常差
    3. x-google-start-bitrate 视频编码初始值 ,当网络好时,码流会向最大值递增,当网络差时,码流会向最小值递减
    • CPU_OVERUSE_DETECTION_CONSTRANIT 这个参数为ture后webrtc会通过检测cpu进行分辨率或者是帧率的调节,同时会启动码率自适应动态调节分辨率策略。
    enum class DegradationPreference {
      DISABLED, //禁用
      // On over-use, request lower resolution, possibly causing down-scaling.
      MAINTAIN_FRAMERATE, //保持帧率,降低码率
      // On over-use, request lower frame rate, possibly causing frame drops.
      MAINTAIN_RESOLUTION, //保码率,降低帧率
      // Try to strike a "pleasing" balance between   or resolution.
      BALANCED,  //平衡
    }
    

    深入阅读 保帧率降分辨率 保帧率降码率

    3. 最小带宽需求

    最差需求 opus is 6kbit/s and for vp8 100kbits/s. 音频正常保持在40-200kbit/s之间,视频至少200kbit/s(最好500kbit/s)

    如何计算coturn服务器需要的带宽, 比如计算20M服务器可以几个人会议
    比如一般用户上传,一半用于下载, 10M用于下载
    //n人每人(n-1)个接收
    n(n-1) = 10M/0.5M , n=5, 所以最多支持5人视频会议

    4. 分辨率和比特率

    webrtc分辨率和比特率

  • 相关阅读:
    fastjson报错 java.lang.StackOverflowError
    关于mybatis使用foreach插入速度较慢的问题
    selectKey返回查询的LAST_INSERT_ID的总是1
    使用java制作https证书
    cf 809
    多校 2009 3
    多校 2009 2
    多校 2009 1
    codeforces 808
    hdu 4734 数位DP
  • 原文地址:https://www.cnblogs.com/WillingCPP/p/14464685.html
Copyright © 2020-2023  润新知