我正在根据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问题吗?
我需要你的帮助。谢谢。
答案 0 :(得分:1)
要保持稳定的视频质量,您必须在 enableCpuOveruseDetection
的 false
中将 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视频不够流畅。