php - 使用 WebRTC 和 PHP 的多客户端视频流
问题描述
我正在寻找创建一个网络应用程序,测验大师可以将他们的相机流式传输给多个参赛者以进行测验。几天后,我似乎在兜兜转转。
首先,我设法使用以下方法在页面内显示主机摄像头:
const video = document.querySelector('video');
navigator.mediaDevices.getUserMedia({ video: true, audio: true }).then((stream) => { video.srcObject = stream});
到现在为止还挺好。测验大师可以在网页上看到自己。现在我想知道如何将这个视频传输给多个参赛者。我假设 WebRTC 是解决方案,但我可能离题了。我的设置是带有 Apache 和 PHP 的 CentOS 7 服务器,所以我正在寻找一个理想的 PHP 解决方案。所以我的问题如下:
- WebRTC 是解决方案吗?
- 我需要在 CentOS 服务器上设置 TURN/STUN 服务器吗?
- 这些服务器可以用 PHP 编写吗?
- 此设置是否支持多个测验/参赛者?
抱歉,如果之前在 Stack Overflow 上已对此进行了介绍。我发现了类似的问题,但很多可以追溯到 2010 年至 2014 年,而且这项技术发展迅速。WebRTC 文档分散在各处,但同样,其中大部分已经过时和过时。
解决方案
是的,WebRTC 是解决方案,但你不能用 PHP 和浏览器到浏览器的 WebRTC 来完成这一切,因为你需要一对多的视频流。因此,您需要在后端运行一个媒体服务器软件:测验大师将他的 WebRTC 流推送到该媒体服务器,多个参赛者将从该媒体服务器接收相同的流。
试试 Wowza 流媒体引擎、虚幻媒体服务器、蚂蚁媒体服务器。
推荐阅读
- sqlite - 创建sqlite表时golang出错
- wordpress - Wordpress BO post.php - 按钮发布/更新不起作用(错误:GET 400 错误请求,rest_invalid_param,orderby=menu_order)
- jenkins - 如何搜索特定电子邮件收件人的所有詹金斯工作
- c# - 如何在 PlayFab 中从玩家获取属性以发送给其他人?
- java - 在 Spring Webflux 中注入中间件
- php - 在另一个表中显示一个表的值(Codeigniter 4)
- docker - Flaskapp 未在 Minikube 集群的所需端口中运行
- visual-c++ - 在 MSVC 16.10.1 中,Intellisense 和编译器不同意 __cplusplus('201705' 与 '202004')
- php - 如何以编程方式更改 Woocommerce 产品数据变量订阅属性
- c# - 使用 SqlBulkCopy 和 DbGeography 数据类型插入大量数据