webrtc - 使用 php 或 node.js 的信令服务器

问题描述 投票:0回答:3

我正在尝试构建一个简单的视频流 Web 应用程序,其中一个用户(聊天室所有者)从他的网络摄像头广播视频,其他用户(聊天室成员)能够实时看到它

我在谷歌上做了很多研究,所以我发现我需要的是:

      - 获取adapter.js 文件以实现兼容性(不知道从哪里获取它)

       - 从网络摄像头获取视频流

      - 将其发送到服务器

      - 让服务器将其发送给某些用户

      - 客户端接收该视频流并将其显示在 < video > 标签中

我只能做第一步,我在网上找到的例子很清晰简单

对于其他步骤,我在网上找到的所有示例都解释了如何在单个页面上本地执行此操作,但我想远程执行此操作,甚至遵循 O'reilly WebRTC 书中的指南

我不知道我应该在服务器端代码中编写什么或如何发送接收到的视频流(我有一些示例,但我不明白代码)

我不知道客户端将如何接收该流(没有找到此流的示例,所有示例都在同一页面上发送和接收视频)

任何人都可以帮忙吗,我的服务器端语言是 PHP,但如果这是必须的,我可以切换到 Node.js

php node.js streaming video-streaming webrtc
3个回答
4
投票

正在在线回答您的问题

  1. 您可以从https://github.com/webrtc/adapter/tree/master/release
  2. 获取adapter.js文件
  3. 要从网络摄像头获取视频流,请使用getUserMedia API,请参阅演示

  4. 要将视频流式传输给观众,请使用 PeerConnection

    • WebRTC 没有定义特定的信令,您可以使用任何信令在 p2p 中使用任何服务器(节点/php)在发布者和查看者之间交换报价/答案/候选者。请参阅官方复杂的演示并获取

    • 如果您想流式传输给多个观众,那么您需要一个媒体服务器,请参阅演示JanusJitsi

您可以找到更多资源这里


4
投票

所以,看来您寻求帮助并且有很多问题。

关于本地或远程:无论是仅在您的计算机上还是在服务器上运行,都没有区别。通常,您在计算机上进行本地测试,然后将其放到网上。您通常不需要更改代码(URL 之类的设置除外)即可使其在服务器上运行。

您说您不知道应该在服务器代码中编写什么。嗯,它只是用于信号传递,因此任何两个浏览器都应该能够通信。通常使用websockets完成,并且用node.js不到10行代码进行编码;有很多这样的小例子,比如 here 。你说你的主要服务器语言是PHP;这是具有挑战性的,因为 PHP 无法在没有命令行访问的情况下使用 websocket。如果您有常规的共享托管 PHP 访问权限,则可以在 http://github.com/nielsbaloe/webrtc-php 使用我的示例,该示例使用 ServerSideEvents。

您想知道客户端将如何接收流。嗯,浏览器负责处理流。您只需要注意握手即可。因此,当您运行两个浏览器的代码时(如我的示例),对于更多客户端而言,它是完全相同的代码,您可以对其进行扩展,以便有一个发送者和多个查看者。


0
投票

我知道这是 4 年后的事了,但如果有人发现了这个,我对 Niels 优秀的 PHP 示例进行了一些扩展,这对我来说使它更加可靠。谢谢尼尔斯!

请参阅我的文章:(其中包含我的 github 存储库的链接)

https://peacocksoftware.com/blog/webrtc-video-chat-only-php-and-javascript-no-nodejs-or-websockets

它仍然不使用 NodeJS 或 WebSockets,但它使用数据库来跟踪消息。该代码在技术上适用于 Drupal,但它旨在用作在任何 PHP 环境中构建视频聊天的指南。

© www.soinside.com 2019 - 2024. All rights reserved.