推流与拉流相关知识总结

410 阅读1分钟

推流与拉流

以直播为例,主播将直播信息传到平台服务器的过程叫做推流,用户访问平台服务器获取直播内容的过程叫做拉流。

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 函数,可用于写入下一帧