WebRtc一般被用作多人视频,按照这种原理来说播放rtsp流也是可以的,这里推荐一个项目:kurento-media-server,项目介绍我就不多说了,大家可以去他的官网看一下介绍。
先看一下效果:
使用h5的video标签,可正常全屏声音播放等。
下面说一下部署方式,部署方式有两种,第一种源码编译(需要科学上网),第二种docker安装,两种方式我都说一下
因为docker安装比较简单,先说第一种
- Dokcer部署
Dokcer安装自行百度,安装好之后执行如下命令:
docker run \
-p 8888:8888/tcp \
-p 5000-5050:5000-5050/udp \
-e KMS_MIN_PORT=5000 \
-e KMS_MAX_PORT=5050 \
kurento/kurento-media-server:latest
如下图
安装好之后从日志上面可以看到websocket监听在8888端口上,上面的-p 8888:8888说明映射宿主机的8888端口,这样服务端就启动好了。接下来安装客户端,客户端直接安装在宿主机上面,从这个地址下载代码:https://github.com/lulop-k/kurento-rtsp2webrtc。下载之后按照他的说明依次执行,(如果是windwos就是用管理员身份运行cmd,mac或者ubuntu使用sudo)
- npm install -g bower
- cd kurento-rtsp2webrtc
- bower install
- npm install -g http-server
- http-server
第五条命令执行之后
这个时候访问:http://127.0.0.1:8080就可以看到第一张图的效果了,然后输入rtsp地址,点击start按钮就可以播放了
- 源码编译
源码编译对环境要求比较苛刻,按照官网的说明只能使用ubuntu16.04或者ubuntu18.04,这里我的环境使用18.04
- 确认可以科学上网
- 安装环境编译工具
sudo apt-get update && sudo apt-get install --no-install-recommends --yes \
build-essential \
ca-certificates \
cmake \
git \
gnupg
- 添加key
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83
- 设置环境变量
export DISTRO="bionic"
sudo tee "/etc/apt/sources.list.d/kurento.list" >/dev/null <<EOF
deb [arch=amd64] http://ubuntu.openvidu.io/dev $DISTRO kms6
EOF
说明:16.04设置为:DISTRO=“xenial”
- 更新仓库
sudo apt-get update && sudo apt-get install --no-install-recommends --yes kurento-media-server-dev
- 下载源码编译
git clone https://github.com/Kurento/kms-omni-build.git
cd kms-omni-build
git submodule update --init --recursive
git submodule update --remote
export MAKEFLAGS="-j$(nproc)"
sudo ./bin/kms-build-run.sh
如下图
可以看到启动之后同样绑定在了8888端口,客户端启动跟上面一致,基本上通过上面的配置可以进行视频播放了,很显然这个是需要自己进行二次开发才能满足现场环境的需求,底层采用c++开发,所有需要使用的小伙伴需要自己再进一步的开发才行。
2021年12月15日更新(重要)
书接上文,根据kurento的官网我改造了一个前后端分离的版本,
运行需要kurento的服务,可根据上面的介绍使用docker安装
播放在支持webrtc协议的现代浏览器,拥有极低的延迟和良好的稳定性
前端的项目地址: https://gitee.com/yzfar/play-web
后端项目地址: https://gitee.com/yzfar/rtsp2webrtc
- 后端基于java开发,主要几个功能说一下,支持声音控制,同一地址复用cpu解码,拥有和vlc播放器一样的延迟(参数控制)
- 前端基于vue2开发,需要nodejs,环境自行安装,安装好之后依次执行
npm install
npm run dev
这个时候可以访问127.0.0.1:8080,然后输入相应的rtsp地址,设置播放延迟、选择是否播放声音等选项开始播放视频流
- 值得注意的是在windwos和mac上面使用docker安装就行了,但是由于是虚拟机所以性能是不如物理机好的,这一点从开始播放时候的连接等待可以轻易看出,在ubuntu18.04上面使用dokcer发现以上面的命令安装之后播放黑屏,这是因为在linux上docker的网络方式不一样造成的,这一点自行解决,不过我个人建议在ubuntu上面直接使用安装服务的方式运行-参考:https://doc-kurento.readthedocs.io/en/latest/user/installation.html#local-installation