webrtc android应用程序中的关键帧要求第一个错误。如何降低传入视频的帧率?

时间:2018-12-28 23:31:02

标签: android webrtc libjingle

我们有一个正常运行的webrtc android应用程序,我们使用Kurento作为媒体服务器,它以24 fps的速度发送视频;但是,Android应用程序中传入的视频流呈现出某种周期性的滞后,就好像处理了第一秒的前15帧并流畅播放,但随后的15帧被跳过一样,因此我们最终得到了一个视频,该视频在几毫秒,但随后也会暂停几毫秒。

我猜测传入的视频帧率对于android设备而言太大,无法处理,因此它会跳过某些帧,然后在缓冲区再次空闲时继续。我在logcat中得到了以下输出(我已经用谷歌搜索,但是没有找到我的问题的答案),说首先需要关键帧

12-28 20:12:27.857 19648-19769/mx.blacklabs.parallax E/org.webrtc.Logging: HardwareVideoDecoder: decode() - key frame required first
12-28 20:12:27.858 19648-19796/mx.blacklabs.parallax E/org.webrtc.Logging: HardwareVideoDecoder: decode() - key frame required first
12-28 20:12:27.858 19648-19769/mx.blacklabs.parallax E/org.webrtc.Logging: HardwareVideoDecoder: decode() - key frame required first

我得到的同一条错误消息有几毫秒的差异,因此看起来与我的问题有关。

我尝试过的事情

-使用here所示的maxFrameRate MediaConstraint,但这似乎没有效果。此外,这似乎是针对localMediaStream的,而我们正尝试减少remoteMediaStream。

观察

我们正在使用的android设备是Moverio BT-300,它在android 5.1.1上运行。我正在使用以下webrtc实现org.webrtc:google-webrtc:1.0.22672

1 个答案:

答案 0 :(得分:0)

约束会降低视频上的frameRate,即传出帧速率。要降低传入帧速率,请让另一端降低传出帧速率,例如通过带外信令(如果您控制两端)告诉它。