0%

组播尝试记录

webRTC

运行srs,http-flv拉流,并进行webRTC的流输出。
开发机运行srs,本地推rtmp到开发机,同时本地通过webRTC拉流,可以实现。但是webRTC不支持组播,此方案不可行。

WebRTC目前不能对组播提供支持

RTSP

服务端支持RTSP推流有解决方案,客户端是web浏览器

  1. 不支持UDP,进而不支持基于UDP的RTP和RTSP
  2. 不支持插件,插件能接收RTSP流但是主流浏览器已逐渐不再支持插件
  3. FLASH已不再支持,因此不能采用RTSP转RTMP方案

候选方案如下

  1. H5Stream(收费) https://www.cnblogs.com/Vince-blogs/p/8608076.html
  2. html5_rtsp_player + streamedian(收费) https://github.com/Streamedian/html5_rtsp_player
  3. jsmpeg https://github.com/phoboslab/jsmpeg
  4. WebAssembly+ffmpeg demo:https://github.com/ringcrl/FFmpeg

EasyDarwin https://github.com/EasyDarwin/EasyDarwin is awesome!

RTSP单播验证

RTSP单播推EasyDarwin,本机ffmpeg配合浏览器拉流

实验目的:

  1. 验证RTSP推流可实现
  2. 验证RTSP拉流可实现
  3. 验证浏览器的RTSP拉流可实现

实验过程:

  1. 本地ffmpeg推流到服务端EasyDarwin

    ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i “0” -rtsp_transport udp -vcodec h264 -f rtsp “rtsp://10.227.22.22/allhands/stream_yuyao”

  2. 本地运行打开webSocket模块 websocket-relay.js

    node websocket-relay.js supersecret 8081 8082

  3. 本地运行ffmpeg转码,将rtsp转为websocket

    ffmpeg -i “rtsp://10.227.22.22/allhands/stream_yuyao” -q 0 -f mpegts -codec:v mpeg1video http://127.0.0.1:8081/supersecret

  4. 本地打开view-stream.html页面(可以用任意http-server),观察输出

实验结论:

  1. RTSP单播推流可行
  2. 浏览器配合ffmpeg拉RTSP可行

当前风险点

  1. 浏览器不支持UDP拉流,据大佬将即使用webassembly预编译FFMPEG也不行
  2. 浏览器不支持IGMP协议
  3. CPU占用、延迟、并发、画面可靠性还未知