Video streaming 如何在webrtc中提高质量和降低帧速率?

Video streaming 如何在webrtc中提高质量和降低帧速率?,video-streaming,webrtc,android-mediacodec,video-codecs,android-webrtc,Video Streaming,Webrtc,Android Mediacodec,Video Codecs,Android Webrtc,我们正在使用android和IOS设备将图像传输到后端进行分析。 我们选择使用webrtc来减少延迟和延迟 我成功地在飞行中更改了焦距和曝光设置,并获得了高恒定分辨率2592x1944帧,同时使带宽保持在1mbp左右 现在,我们希望提高质量(减少压缩伪影)并将帧速率降低到2-5 fps,同时/保持带宽受控(1-2 mbp) 在更改编码器参数后,我正试图通过重新编译webrtc库(目前只有android)来实现这一点 这是我在webrtc项目的“HardwareVideoEncoder.java”

我们正在使用android和IOS设备将图像传输到后端进行分析。 我们选择使用webrtc来减少延迟和延迟

我成功地在飞行中更改了焦距和曝光设置,并获得了高恒定分辨率2592x1944帧,同时使带宽保持在1mbp左右

现在,我们希望提高质量(减少压缩伪影)并将帧速率降低到2-5 fps,同时/保持带宽受控(1-2 mbp)

在更改编码器参数后,我正试图通过重新编译webrtc库(目前只有android)来实现这一点

这是我在webrtc项目的“HardwareVideoEncoder.java”中使用的代码

MediaFormat format = MediaFormat.createVideoFormat(codecType.mimeType(), width, height);
      format.setInteger(MediaFormat.KEY_BIT_RATE, adjustedBitrate);
      format.setInteger(KEY_BITRATE_MODE, 4);
      format.setInteger(MediaFormat.KEY_COLOR_FORMAT, colorFormat);
      format.setInteger(MediaFormat.KEY_FRAME_RATE, bitrateAdjuster.getCodecConfigFramerate());
      format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, keyFrameIntervalSec);
      if (codecType == VideoCodecMimeType.H264) {
        String profileLevelId = params.get(VideoCodecInfo.H264_FMTP_PROFILE_LEVEL_ID);
        Logging.e(TAG, "profileLevelId:" + profileLevelId);
        if (profileLevelId == null) {
          profileLevelId = VideoCodecInfo.H264_CONSTRAINED_HIGH_3_1;
        }
        switch (profileLevelId) {
          case VideoCodecInfo.H264_CONSTRAINED_HIGH_3_1:
            format.setInteger("profile", VIDEO_AVC_PROFILE_HIGH);
            format.setInteger("level", VIDEO_AVC_LEVEL_3);
            break;
          case VideoCodecInfo.H264_CONSTRAINED_BASELINE_3_1:
            break;
          default:
            Logging.w(TAG, "Unknown profile level id: " + profileLevelId);
        }
我尝试提高MediaFormat.KEY_比特率、更改比特率模式、关键帧时间,并尝试vp8、vp9、H264编解码器(同时将sdp更改为),但我没有感觉到得到不同的结果。通过一些设置,我得到编码器初始化失败,但应用程序仍然发送流(我不明白这是怎么可能的)

此外,我正在尝试将色度子采样更改为4:4:4,以获得更好的质量

所以我的问题是,要实现高质量、低压缩和低帧率,一组好的参数/编解码器是什么

我们是否需要改变/重新编码解码器端以实现这一点,或者编码器已经足够了


如果有任何文章/文档/教程能帮助我理解(我的拳击能力超过我的体重)并实现这一目标,我将不胜感激

您找到解决方案了吗?您找到解决方案了吗?