如何在Android手机上使用WebRTC维持高清分辨率

时间:2015-08-17 08:39:40

标签: android google-chrome webrtc

我正在根据this source制作WebRTC-node.js服务。 我希望以高清分辨率(1280x720)在PC(Chrome)和移动设备(Android Chrome)之间进行视频聊天。

当我将约束设置为1280x720,带宽设置为2000并经过测试时,移动视频的质量最好(1280x720),但在几秒钟后降至低质量,而PC上的视频质量保持良好。

我读了这个QnA:Why does video resolution change when streaming from Android via WebRTC

它说:

  

您看到的降级位于PeerConnection层,而不是getUserMedia层。当硬件和带宽统计数据表明性能低下时,webrtc实施会触发降级,并由双方协商。

对于某些带宽怀疑,我也在本地网络中测试过,但结果是一样的。 而不是node.js,我尝试了XSockets.WebRTC,但结果是一样的。

那么,如何从Android手机维护高清分辨率呢? 这是Chrome-vp8问题吗?

我需要你的帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

要保持稳定的视频质量,您必须在 enableCpuOveruseDetectionfalse 中将 RTCConfiguration 标志设置为 PeerConnection,并确保 VideoCapture 使用 { 设置所需的视频分辨率{1}} 方法(您可以使用 startCapture of getSupportedFormats 来获得合理的手机摄像头支持的视频分辨率)。

这为您提供稳定的高清视频分辨率(如果您通过 CameraEnumerator 设置)和更高(除非带宽足够),但缺点可能会增加电池消耗并可能导致 cpu 过热(特别是对于一些旧的 Android手机)。

startCapture

答案 1 :(得分:0)

在WebRTC官方存储库https://chromium.googlesource.com/external/webrtc/

文件/talk/media/base/videoadapter.cc显示WebRTC会根据设备CPU负载降低视频分辨率。默认情况下启用此功能。

我在禁用视频适配器的情况下构建了原生iOS应用程序,但iPhone 6s中的720p视频不够流畅。