基于WebRtc的rtsp流播放

原创
2021/04/19 11:59
阅读数 3.7W

WebRtc一般被用作多人视频,按照这种原理来说播放rtsp流也是可以的,这里推荐一个项目:kurento-media-server,项目介绍我就不多说了,大家可以去他的官网看一下介绍。

先看一下效果:

使用h5的video标签,可正常全屏声音播放等。

下面说一下部署方式,部署方式有两种,第一种源码编译(需要科学上网),第二种docker安装,两种方式我都说一下

因为docker安装比较简单,先说第一种

  1. 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就是用管理员身份运行cmdmac或者ubuntu使用sudo

  1. npm install -g bower
  2. cd kurento-rtsp2webrtc
  3. bower install
  4. npm install -g http-server
  5. http-server
第五条命令执行之后

这个时候访问:http://127.0.0.1:8080就可以看到第一张图的效果了,然后输入rtsp地址,点击start按钮就可以播放了

  1. 源码编译

源码编译对环境要求比较苛刻,按照官网的说明只能使用ubuntu16.04或者ubuntu18.04,这里我的环境使用18.04

  1. 确认可以科学上网
  2. 安装环境编译工具

sudo apt-get update && sudo apt-get install --no-install-recommends --yes \

    build-essential \

    ca-certificates \

    cmake \

    git \

    gnupg

  1. 添加key

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83

  1. 设置环境变量

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”

  1. 更新仓库

sudo apt-get update && sudo apt-get install --no-install-recommends --yes kurento-media-server-dev

  1. 下载源码编译

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

  1. 后端基于java开发,主要几个功能说一下,支持声音控制,同一地址复用cpu解码,拥有和vlc播放器一样的延迟(参数控制)
  2. 前端基于vue2开发,需要nodejs,环境自行安装,安装好之后依次执行

npm install

npm run dev

这个时候可以访问127.0.0.1:8080,然后输入相应的rtsp地址,设置播放延迟、选择是否播放声音等选项开始播放视频流

  1. 值得注意的是在windwos和mac上面使用docker安装就行了,但是由于是虚拟机所以性能是不如物理机好的,这一点从开始播放时候的连接等待可以轻易看出,在ubuntu18.04上面使用dokcer发现以上面的命令安装之后播放黑屏,这是因为在linux上docker的网络方式不一样造成的,这一点自行解决,不过我个人建议在ubuntu上面直接使用安装服务的方式运行-参考:https://doc-kurento.readthedocs.io/en/latest/user/installation.html#local-installation

 

展开阅读全文
加载中
点击加入讨论🔥(1) 发布并加入讨论🔥
1 评论
5 收藏
3
分享
返回顶部
顶部