web worker
HTTP 缓存机制
缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。
我们使用 HTTP 缓存,通过复用缓存资源,减少了客户端等待时间和网络流量,同时也能缓解服务器端的压力。可以显著的提升我们网站和应用的性能。
虽然 HTTP 缓存不是必须的,但重用缓存的资源通常是必要的,HTTP 缓存是一个 web 性能优化的重要手段。
socketio项目部署
在开发期间,后台服务使用的是 Flask 自带的 development server,该服务不支持 websocket 协议,只支持 pollling 协议。
在项目上线时,我们需要使用生产环境的 web server,如 gunicorn,uwsgi,以及能够支持 websocket 协议的网络库: eventlet 或 gevent。
webRTC-切换摄像头
切换摄像头可以通过改变 getMediaStream 的约束条件来实现。
前置摄像头:
1 | constraints = { |
后置摄像头:
搭建coturn服务
python日志
Python logging 模块定义了为应用程序和库实现灵活的事件日志记录的函数和类。
日志记录函数以它们用来跟踪的事件的级别或严重性命名。下面描述了标准级别及其适用性(从高到低的顺序):
critical > error > warning > info > debug
nginx配置多个vue项目
js-媒体流录制
有时候我们需要用 js 来录音或者录视频,就需要用到 mediaRecorder。
具体介绍请看:https://developer.mozilla.org/zh-CN/docs/Web/API/MediaRecorder/MediaRecorder。
MediaRecorder 介绍
方法
- start():开始
- stop():结束
- pause():暂停
- resume():恢复录制
webRTC-端到端加密
概述
Insertable Stream 可插入流是新的 WebRTC API,,可用来操作通过 RTCPeerConnection 传送的 MediaStreamTracks 中的每一个字节。它让上层应用能对 WebRTC 底层媒体进行访问,让以往 WebRTC 应用中许多不可能做的情况都成为可能了, 比如替换视频聊天时的背景,实时进行音视频处理(降噪,美颜,打水印,加特效等)。
最新的规范在这里 https://w3c.github.io/webrtc-encoded-transform/。
webRTC 音视频处理流程
发送流程
- 从媒体设备/其他采集源中获得一帧一帧的数据
- 对原始数据进行编码
- <- 在这里插入自定义逻辑
- SRTP 加密
- 发送
接收流程
- 接收网络 RTP 包
- SRTP 解密
- RTP 组包
- <- 在这里插入自定义逻辑
- 解码数据
- 渲染数据