RTCMultiConnection可以使用H264代替VP9进行屏幕共享吗?

时间:2017-10-07 15:17:01

标签: raspberry-pi webrtc h.264 rtcmulticonnection vp9

我正在处理与屏幕共享相关的项目,我遇到的唯一问题是需要在Raspberry PI上显示从PC或Mac(Chromium浏览器,实际上是电子应用程序)共享的屏幕(i我正在使用模型3 B,最现代的一个)。在我的实验中,项目刚刚开始,我正在使用RTCMultiConnection来共享屏幕并观看它。

问题是,即使在显示它的Chromium中启用了完整的HW加速,它也是无用的慢(2-3 fps,有时延迟10秒),我完全理解为什么:因为它使用VP9编解码器,因为它没有Raspberry上存在硬件加速。

问题是:我可以在RTCMultiConnection中使用H264吗?如果有,怎么样?我知道WebRTC本身基本上支持它。

1 个答案:

答案 0 :(得分:0)

在HTML演示文件中添加以下代码:

connection.processSdp = function(sdp) {
    // remove VP8+VP9 so that Firefox can use H264
    sdp = CodecsHandler.removeVPX(sdp);
    return sdp;
};

转到" dev"目录并打开此文件:dev/CodecsHandler.js#L5-L30第5到30行。

确保VP8和VP9线正确无误。

a=rtpmap:100
a=rtpmap:101

也许VP8是96而VP9是98.所以相应地替换rtpmap。 E.g。

a=rtpmap:96
a=rtpmap:98

确保仅使用Firefox进行测试。如果Chrome稳定版渠道也支持H264,我不知道。

Fireox可能需要一些标志。您可以在h264

上搜索about:config个标记

确保在dev/CodecsHandler.js之后快速链接HTML演示文件中的dist/RTCMultiConnection.min.js

<script src="dist/RTCMultiConnection.min.js"></script>
<script src="dev/CodecsHandler.js"></script>
<script>
var connection = new RTCMultiConnection();
connection.socketURL = 'https://yourserver.com:9001/';
connection.processSdp = function(sdp) {
    // remove VP8+VP9 so that Firefox can use H264
    sdp = CodecsHandler.removeVPX(sdp);
    return sdp;
};
connection.openOrJoin('roomid');
</script>