rtmp 调研整理

涉及技术点

  • nginx
  • ffmpeg
  • rtmp 协议
  • webrtc
  • WCS服务器

其实整体来说可能跟 mediasoup 没有太多紧密联系(站在bs结构)h5的方式没有办法直接推流到 rtmp地址,下面一点一点来总结整理。

nginx 方面

这里研究了 nginx 搭建rtmp, 安装nginx 需要 --with-rtmp-module,
安装成功之后配置rtmp服务,

rtmp {
    server {
        listen 1935;

        application room {
            live on;

            #record keyframes;
            #record_path /tmp;
            #record_max_size 128K;
            #record_interval 30s;
            #record_suffix .this.is.flv;

            #on_publish http://localhost:8080/publish;
            #on_play http://localhost:8080/play;
            #on_record_done http://localhost:8080/record_done;
        }

            application hls {
            live on;
            hls on;
            hls_path /tmp/hls;
            hls_fragment 10s;     #每个视频切片的时长。
            hls_playlist_length 60s;  #总共可以回看的事件,这里设置的是1分钟。
            #hls_continuous on; #连续模式。
            #hls_cleanup on;    #对多余的切片进行删除。
            #hls_nested on;     #嵌套模式。
        }
    }
}

重启 nginx

ffmpeg 模拟推流

这里没有太多东西要说的


ffmpeg -re -i /home/lee/video.mp4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://localhost/room/123123

rtmp 协议

RTMP(Real Time Message Protocol)由 Adobe 公司提出流媒体协议,并且是私有协议,未完全公开,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,RTMP协议一般传输的是 flv,f4v 格式流。一般在 TCP 1个通道上传输命令和数据。

  • 优势:

在于低延迟,稳定性高,支持所有摄像头格式
专为流媒体开发的协议,对底层的优化比其它协议更加优秀

  • 劣势:

浏览器需要加载 flash插件才能播放。
RTMP 为 Adobe 私有协议,很多设备无法播放,特别是在 iOS 端,需要使用第三方解码器才能播放
基于 TCP 传输,非公共端口,可能会被防火墙阻拦

webrtc to rtmp 服务端转换的话。

这里转换可能会耗费资源较多。
rtmp 调研整理_第1张图片

当然还有其他方案,不需要服务端转换, 直接客户端推流 rtmp 和 webrtc 两种 ,如果推rtmp流就需要用端的方式,纯bs结构不支持了, 前面rtmp提到了

wcs服务器

这块不太了解了就

参考连接
  • https://www.kutu66.com/Web_Development/article_2367
  • https://www.helplib.cn/%E5%AD%A6%E4%BB%A5%E8%87%B4%E7%94%A8/7-ways-to-stream-rtsp-on-the-page

你可能感兴趣的:(linux,node,js,html5,webrtc,rtmp,nginx)