推流与拉流
以直播为例,主播将直播信息传到平台服务器的过程叫做推流,用户访问平台服务器获取直播内容的过程叫做拉流。
ffmpeg
ffmpeg 可以用来做 rtmp 推流,将本地文件推流到服务器上
nginx-rtmp-module 与 nginx-http-flv-module
nginx-rtmp-module 是基于 nginx 的流媒体服务器
nginx-http-flv-module 基于 nginx-rtmp-module,额外提供了一些功能,包括 HTTP-FLV
flv.js
H5 原生仅支持 mp4/webm 格式,flv.js 使得 H5 支持 flv 格式的视频
基础知识
直播流媒体协议
HTTP-FLV
将数据以 flv 格式封装
RTMP 与 RTSP
这两种都是常见的流媒体协议,RTMP 基于 TCP,主要用于直播等;RTSP 基于 UDP,主要用于摄像头、物联网设备等
nginx
正向代理与反向代理
正向代理的典形应用是科学上网,即通过一个中间服务器请求和接收内容,用户需要配置正向代理的 IP
反向代理对用户透明,用户向反向代理服务器的请求,可能会被转发到其它服务器,但用户不可知。可用于负载均衡、隐藏原始资源服务器等
Opencv VideoWriter
对实时摄像头(视频)的每一帧进行处理,再写入视频流,可以使用cv2.VideoWriter(filename,fourcc,fps,frameSize[,isColor]) 类,fourcc 指定视频编码格式,支持 .avi/.ogv/.flv/.mp4 格式。该类提供了 write 函数,可用于写入下一帧