首页 > 解决方案 > 如何在现有 PHP 项目中实现视频通话

问题描述

我是开发中的新手。我必须实施视频会议。我正在使用 PHP,Jquery。我在很多网站上都搜索过这个,但没有找到任何详细而简单的教程。

如何在 RTCPeerConnection 中创建房间并加入房间。当我尝试从 webrtc 指南中实现时,他们使用了 SignalingChannel(),但由于找不到它而出现错误。在这个主题上需要任何帮助。

提前致谢

标签: javascriptphpjqueryyii2webrtc

解决方案


您不需要使用 nodejs 通过屏幕共享进行视频通话。我不确定您目前在该领域的知识程度,因此我将提供更多信息,这些信息不是您的问题直接要求的。

我建议你使用 webRTC。https://webrtc.github.io/samples/ 您可以使用 getDisplayMedia 来获取屏幕共享的流。您可以使用 getUserMedia 请求麦克风和(可选)摄像头。

当您拥有流时,您需要创建一些 RTCPeerConnection,您将在该对象上添加这些流并连接 2 个用户之间的 RTCPeerConnection。

连接 2 个用户所需的唯一数据是

RTCPeerConnection.createOffer()
RTCPeerConnection.setLocalDescription()
RTCPeerConnection.createAnswer()
RTCPeerConnection.setRemoteDescription()
RTCPeerConnection.addIceCandidate()
RTCPeerConnection.onicecandidate = eventHandler;

您需要在两个 RTCPeerConnection 之间交换“offer”、“answer”、“candidates”,以建立连接并在 2 个用户之间共享流。

通常人们使用信号服务器来交换这些消息,如 socket.io 或 websockets,但我们可以使用任何东西来交换这些消息。网上有很多信息,例如https://telecom.altanai.com/tag/rtc/

简而言之,您应该从自己到自己创建一个 RTCPeerConnection 作为概念证明,然后,您需要弄清楚如何在同一页面上的两个对象之间转发“offer”、“answer”、“candidates”消息。完成后,您现在需要弄清楚如何在 2 个浏览器之间交换它们。

如果这没有帮助,我很抱歉,我从未听说过也没有使用过 yii2。但在 php 中,您可以在服务器端存储一个 roomId + 用户的报价。当第二个用户加入同一个 roomId 时,您将报价转发给他,他将答案和候选人发送到 php,您需要将其转发回其他用户。这间接意味着,您需要两个用户每 5 秒对您的网站进行一次 ping 操作,以了解他们的报价是否有答案或候选人。

建立连接后,您不再需要 ping 您的站点,因为您的连接已完全建立。


推荐阅读