0%

deepin/ubuntu 环境。

安装 coturn

先安装依赖:

1
apt-get install libssl-dev libevent-dev

然后下载 coturn:

1
git clone https://github.com/coturn/coturn.git
阅读全文 »

Python logging 模块定义了为应用程序和库实现灵活的事件日志记录的函数和类。

日志记录函数以它们用来跟踪的事件的级别或严重性命名。下面描述了标准级别及其适用性(从高到低的顺序):

critical > error > warning > info > debug

阅读全文 »

nginx 同时部署多个 vue 项目

假如现在有两个前端项目:chat、 admin。想要通过 ‘/‘ 访问 chat 项目,通过 ‘/admin’ 访问 admin 项目。

修改 publicPath

默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上,例如 https://www.my-app.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.my-app.com/my-app/,则设置 publicPath/my-app/

阅读全文 »

概述

Insertable Stream 可插入流是新的 WebRTC API,,可用来操作通过 RTCPeerConnection 传送的 MediaStreamTracks 中的每一个字节。它让上层应用能对 WebRTC 底层媒体进行访问,让以往 WebRTC 应用中许多不可能做的情况都成为可能了, 比如替换视频聊天时的背景,实时进行音视频处理(降噪,美颜,打水印,加特效等)。

最新的规范在这里 https://w3c.github.io/webrtc-encoded-transform/


webRTC 音视频处理流程

发送流程
  1. 从媒体设备/其他采集源中获得一帧一帧的数据
  2. 对原始数据进行编码
  3. <- 在这里插入自定义逻辑
  4. SRTP 加密
  5. 发送
接收流程
  1. 接收网络 RTP 包
  2. SRTP 解密
  3. RTP 组包
  4. <- 在这里插入自定义逻辑
  5. 解码数据
  6. 渲染数据
阅读全文 »

上一节讲了 webRTC 的原理,今天我们就来实践一下。

我们知道,webRTC 是点对点的连接,它不需要服务器的参与,但是需要一个信令服务器来传递信令,这样才能使双方建立起连接。

这里我们用 node.js 来充当信令服务器,通过 websocket(socket.io)来传递信令。

新建目录 demo,在 demo 下新建 index.js 文件(信令服务器)和 文件夹 public(存放静态文件)。在 public 下新建 index.html 和 main.js 文件。

阅读全文 »

什么是 WebRTC?

WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的 API,经过多年来的发展与改进,日臻成熟,作为浏览器网页端的通信技术,WebRTC 与 H5 巧妙结合,使得网页端的音视频通信变的简单易行,最为重要的是:网页端通信是完全免费的。

阅读全文 »

通过 socket.io 来操作 websocket API。

安装
1
pip install python-socketio

创建服务

创建服务的方式
1. 通过 WSGI 托管服务
1
2
3
4
5
6
7
import socketio

# 创建一个 socket.io 服务
sio = socketio.Server()

# 将 socket.io 服务托管到 wsgi 服务上
app = socketio.WSGIApp(sio)
阅读全文 »

这里用到 socket.io。

安装
1
npm install socket.io-client

初始化

你可以使用 http(https) 或 ws(wss) 来进行初始化。

1
2
3
4
5
6
import {io} from 'socket.io-client'

const socket = io('http://localhost:8000', {
reconnectionDelay: 2000,
autoConnect: true
});
阅读全文 »

什么是 websocket

WebSocket 是一种标准协议,用于在客户端和服务端之间进行双向数据传输,它是一种基于 TCP 的独立实现。

以前客户端想知道服务端的处理进度,要不停地使用 Ajax 进行轮询,让浏览器隔个几秒就向服务器发一次请求,这对服务器压力较高。另外一种轮询就是采用 long poll 的方式,这就跟打电话差不多,没收到消息就一直不挂电话,也就是说,客户端发起连接后,如果没消息,就一直不返回 Response 给客户端,连接阶段一直是阻塞的。

阅读全文 »