当前位置: 首页 > 面试题库 >

使用HTML5网络套接字实现基于网络的实时视频聊天

郏志学
2023-03-14
问题内容

有谁知道如何使用HTML5 WebSocket在Web应用程序中实现IP语音/视频?

如果我可以用PHP或Python来实现它,那就太好了,因为(不幸的是)我目前不知道任何其他编程语言。

一个好的教程以及一个我必须付费的已经构建好的解决方案都可以。

更新1:
添加了视频,因为它不仅与音频/语音相关。

Update2:
第一个HTML5视频会议应用程序已创建。 看我自己的答案


问题答案:

如果只想使用HTML5,则需要一个实现 HTML Media Capture
草稿(在此处可用)的浏览器,以便从麦克风访问原始数据。

一旦掌握了这些数据,就需要通过网络发送它。Websockets将是HTML5选项,以便与服务器具有足够快的往返行程(同时发送本地音频数据和接收远程音频数据)

既然您提到python,我建议您看看websockets的扭曲实现。

您可以让所有客户端使用一个callerID在websocket服务器上“注册”,因此服务器知道在哪里可以找到给定的callerID。

然后,您的服务器将需要一个“邀请” API,其中caller1“邀请” caller2。

呼叫建立后,每个客户端开始发送其音频数据,服务器将能够将该音频数据发送给另一方。

接收到音频数据后,浏览器可能需要使用HTML5音频标签在扬声器上播放此音频数据。

为此,您可能被迫使用“技巧”:您可能需要模拟2个“无限”文件,而不是让websocket服务器将原始音频数据转发到客户端,而是:

  1. caller1.wav:在caller1麦克风上捕获的声音
  2. caller2.wav:在caller2麦克风上捕获的声音

呼叫建立后,caller1浏览器会在audio.src属性中添加caller2.wav(通过websocket通知caller1该事件),并希望python服务器在接收到原始音频数据后将其添加到caller2.wav,它将开始播放。

这听起来像是很酷的原型,您将要破解!

祝你好运,

杰罗姆·瓦格纳(Jerome Wagner)



 类似资料:
  • 一、Memcached简介 memcached是一款非常普及的服务器端缓存软件,memcached主要是基于Libevent库进行开发的。 如果你还不了解libevent相关知识,请先看我的 libevent 这篇文章《Linux c 开发 - libevent 》 memcached也是使用autotools的进行代码编译管理的,如果你还不了解autotools,你可以先看下文章:《Linux

  • 计算机网络基础 ip地址 为了使网络上的计算机能够彼此识别对方,每台计算机都需要一个IP地址以标识自己。 IPv4:32位,IPv6:64位 OSI七层参考模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 地址解析 地址解析是指将计算机的协议地址解析为物理地址,即MAC(Medium Access Control)地址,又称为媒体访问控制地址。通常,在网络上由地址解析协议(ARP)

  • 本文向大家介绍关于ResNeXt网络的pytorch实现,包括了关于ResNeXt网络的pytorch实现的使用技巧和注意事项,需要的朋友参考一下 此处需要pip install pretrainedmodels 以上这篇关于ResNeXt网络的pytorch实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍python实现文本界面网络聊天室,包括了python实现文本界面网络聊天室的使用技巧和注意事项,需要的朋友参考一下 Hello大家好,今天说一下python的socket编程,基于python的socket通信的文本框网络聊天 首先,实验环境: 一个云服务器(我们这里是用的阿里云,大家将就自己的条件吧); 类Unix操作系统(如Mac OS,Linux等); Windows系列操作

  • 本文向大家介绍python基于socket实现网络广播的方法,包括了python基于socket实现网络广播的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python基于socket实现网络广播的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • PyTorch包含创建和实现神经网络的特殊功能。在本章中,我们将创建一个简单的神经网络,实现一个隐藏层开发单个输出单元。 我们将使用以下步骤使用PyTorch实现第一个神经网络 - 第1步 首先,需要使用以下命令导入PyTorch库 - 第2步 定义所有图层和批量大小以开始执行神经网络,如下所示 - 第3步 由于神经网络包含输入数据的组合以获得相应的输出数据,使用以下给出的相同程序 - 第4步 借