海康rtsp视频流直播-kurento 2020-09-26 程序之旅 2 条评论 1994 次阅读 ## 海康rtsp视频流直播-kurento ### 简述 有在之前的博文中写到使用nginx和ffmpeg来是实现视频流的传输,但是需要在实际的生活中使用还需要一点改进,其中环境搭建和延迟的是个棘手的问题,实现rtsp流的传输需要依赖两个第三方工具,并且还得根据需求进行手动配置,大大提升开发的维护成本。 在延迟方面,相对于HLS直播方式来说,播放延迟已经有了很大的降低,但是使用过程中还是存在2-3s的延迟,对于一些实时性较高的环境来说,无疑是一个很大的问题。 在插件方面,在2020年底,flash正式禁用,而rtmp的播放依赖于这插件,这又对使用的环境有了局限性。 综合以上几点: - 安装搭建复杂 - 延迟有2-3秒 - 播放RTMP需要插件 这些问题是实际应用中不能广泛使用的原因。 在前面说的几个方案中,其中有说到webrtc,全名Web Real-Time Communication,能够大大的降低音频和视频实时通信延迟,延迟可以在500ms左右。 目前kurento就能很好的包视频就转成webrtc发送到web页面中。在之前的nginx和FFmpeg中,延迟大多是因为FFmpeg的RTSP转RTMP流是的延迟,如果是能够实现RTSP流直接传输到web页面,那就能大大的减少转码带来的延迟问题。 ![未命名表单](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/20200926220644.jpg) WebRTC规范中能很好的支持**VP8** 和**H.264** 视频编解码器,因此支持WebRTC的浏览器能够直接播放摄像头的流数据,不需要转码的过程。 kurento中的**agnosticbin** 的组件就是解决发送数据流到webrtc中,Gstreamer解决视频流的信息获取,在ubuntu16.04和ubuntu18.04中就自带有Gstreamer的环境,有些插件需要手动的安装,kurento media server目前也只支持ubuntu,跨品台的可以考虑docker安装。 ### 系统环境 - ubuntu 16.04 - DS-2CD2T25D 海康设备 - kurento-media-server - Gstreamer1.0 如果有使用虚拟机的需要考虑网络和cpu硬件解码的问题,不建议使用虚拟机进行测试开发 ### Gstreamer的使用 安装工具软件 ``` $ apt isntall gstreamer1.0-vaapi # 播放工具 $ apt install gstreamer1.0-plugins-bad # 解码工具 $ gst-launch-1.0 vaapi # 查看插件命令 ``` 执行命令 ``` $ gst-launch-1.0 -v rtspsrc location=rtsp://admin:hik12345@192.168.1.100:554 ! rtph264depay ! capsfilter caps="video/x-h264" ! h264parse ! vaapih264dec ! vaapisink sync=false ``` 如果能正常的播放,并且播放没有延迟,说明你的播放地址没有问题;如果有延迟,需要检查一下播放源是否存在编解码问题。 ### kurento的安装 kurento的安装有两种,一种是[apt安装](#本地安装);另一种是[docker安装](#docker安装) 这里先使用apt安装,国内安装时间比较长,我这里大概使用了1小时,官网也有很详细的[安装教程](https://doc-kurento.readthedocs.io/en/stable/user/installation.html#local-installation) #### 本地安装 1、去表GnuPG已经被安装 ```shell sudo apt-get update && sudo apt-get install --no-install-recommends --yes \ gnupg ``` 2、kurento的文件库配置 ```shell # Import the Kurento repository signing key sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83 # Get Ubuntu version definitions source /etc/upstream-release/lsb-release 2>/dev/null || source /etc/lsb-release # Add the repository to Apt sudo tee "/etc/apt/sources.list.d/kurento.list" >/dev/null < 可以通过命令启动和关闭软件 > > ```shell > sudo service kurento-media-server start > sudo service kurento-media-server stop > ``` > > 本地安装调试不需要安装配置sturn或turn。然而,如果你想在云端部署,并且可以通过NAT路由连接到你的摄像头,那么就需要安装Coturn来搭建Stun/turn服务。这里就不做,如果想深入了解,[推荐文章](https://www.cnblogs.com/pannengzhi/p/5061674.html)。 #### docker安装 国内的apt方式安装过慢,可以使用docker安装的方式 1、确保docker安装 ```shell $ sudo su $ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common $ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - $ sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) \ stable" $ sudo apt-get update $ sudo apt-get install docker-ce $ sudo systemctl enable docker ``` 提高拉取image源速度,在 /etc/docker/daemon.json 文件中添加以下参数(没有该文件则新建): ```json { "registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"] } ``` 服务重启: ```shell $ systemctl daemon-reload $ systemctl restart docker ``` 2、拉取KMS(kurento-media-server) ```shell $ docker pull kurento/kurento-media-server ``` ![image-20200927094826909](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/worker/20200927094828.png) 启动服务 ```shell $ docker run -d --name kms --restart=always --network host \ kurento/kurento-media-server:latest ``` ### 调试服务 KMS对java和nodejs有很好的支持,并且有实现代码,在[这里]( https://github.com/Kurento/kurento-tutorial-java.git)。可以自行下载调试。 ![rtsp](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/worker/20200927101411.gif) ### FAQ - 安装Gstreamer 的工具名不对 使用apt-cache search [关键字],模糊查询能够下载的软件名和版本,如果没有使用`apt-get update`更新一下 - KMS的使用会有延迟2秒左右 gstreamer rtsp的播放器有默认的2s中rtp流延迟,需要手动的设置流的延迟时间。 打赏: 微信, 支付宝 标签: none 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
5aSn5L2s77yM5L2g5aW95YOP6IOW5LqG44CC5oiR55+l6ZSZ5ZWm77yM5Y6f6LCF5oiR5ZCn77yM6L+Y5piv5b6I6IiN5LiN5b6X5L2g6L+Z5Liq5aW95pyL5Y+L77yM5Yir5ouJ6buR5oiR5ZWm77yM6YeN5paw5Yqg5oiRd3jlpb3lj4vlkKc=
5oiR6IOW77yM5ZCD5L2g6aWt5ZWm