live555在Windows WSL2中编译、运行,搭建RTSP流服务器

在这里插入图片描述

文章目录

  • 1. 背景
  • 2. 实施步骤
    • 2.1 下载live555安装包
    • 2.2 解压压缩包
    • 2.3 编译源码
    • 2.3 安装ffmpeg
    • 2.4 安装opencv-python
    • 2.5 视频文件格式转换
    • 2.6 启动推流
    • 2.6 安装VLC,验证
  • 3. 用opencv-python接口接收视频流
  • 参考


1. 背景

想要通过RTSP往opencv的接口中推流,然后做一下yolo的推理等练习,本篇主要记录如何搭建RTSP推流服务器,本篇的环境是Windows WSL2,当然也可以在Linux PC中搭建,方法一致,感兴趣的小伙伴可以试试。
博主的环境信息如下:
在这里插入图片描述


查阅资料,一般都是通过live555作为推流服务器。


2. 实施步骤

2.1 下载live555安装包

前往官网,下载最新版本的live555安装包。
live555官网
在这里插入图片描述


 wget http://www.live555.com/liveMedia/public/live.2023.07.24.tar.gz

在这里插入图片描述


2.2 解压压缩包

解压压缩包:

tar -xvf live.2023.07.24.tar.gz

2.3 编译源码

编译源码:

cd live
./genMakefiles linux-64bit
make

在这里插入图片描述
发现编译失败:
在这里插入图片描述


尝试解决编译问题,但仍无法编译通过。
openrtsp 2023.06.16 build issue #45
于是,放弃最新版本,下载历史版本,在下面的网页中找到live.2021.11.23.tar.gz这个版本,并下载。
live555的历史版本
按照前面的方法,解压、编译:
在这里插入图片描述
编译OK。
查看/mediaServer/路径下live555MediaServer是否被编译出来:
在这里插入图片描述


下载测试视频文件:
在这里插入图片描述
当然,用其他的视频文件也可以。


2.3 安装ffmpeg

在这里插入图片描述


2.4 安装opencv-python

在这里插入图片描述


2.5 视频文件格式转换

ffmpeg -i test.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 test.264

在这里插入图片描述


在这里插入图片描述


将格式转换后的视频文件拷贝到/mediaServer/路径下:
在这里插入图片描述


2.6 启动推流

 ./live555MediaServer

在这里插入图片描述
可以看到,服务端已经启动,连接服务端的URL是:rtsp://192.168.181.1:8554/,我们拷进去的视屏文件名字是test.264,那这里的就是test.264。
至此,推流服务端的准备工作都已完成。


2.6 安装VLC,验证

现在有了服务端,必须要有客户端来验证,所以需要用到VLC,来验证推流功能是否正常。
前往VLC官网下载Windows版本的VLC:
在这里插入图片描述


安装VLC,打开媒体–>打开网络串流:
在这里插入图片描述


点击播放,效果如下:
在这里插入图片描述


至此,live555搭建的RTSP推流服务器搭建成功。


3. 用opencv-python接口接收视频流

在Windows上准备接收程序:

import numpy as np
import cv2

# cap = cv2.VideoCapture(1)
cap = cv2.VideoCapture("rtsp://192.168.181.1:8554/test.264")

while(True):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

在这里插入图片描述


运行接收程序:

python untitled.py

在这里插入图片描述
显示效果如下:
在这里插入图片描述


参考

【1】Ubuntu用live555快速搭建一个RTSP视频流服务器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/85049.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

选择靠谱商城系统的重要性

电子商务的蓬勃发展,越来越多的企业和商家开始进入电商领域,希望通过搭建自己的网上商城来实现业务增长和利润提升。然而,在选择合适的商城系统时,很多人往往会忽视靠谱性这一关键因素。下面就选择靠谱商城系统的重要性作一些简单…

DataSecurity Plus:守护企业数据安全的坚实屏障

在数字化时代,数据被誉为企业最重要的资产之一。然而,随着大数据的兴起和信息的日益增长,企业面临着前所未有的数据安全挑战。为了应对这些挑战,数据安全管理变得至关重要。在这个领域,ManageEngine的DataSecurity Plu…

一篇文章教你自动化测试如何解析excel文件?

前言 自动化测试中我们存放数据无非是使用文件或者数据库,那么文件可以是csv,xlsx,xml,甚至是txt文件,通常excel文件往往是我们的首选,无论是编写测试用例还是存放测试数据,excel都是很方便的。…

【Linux】进程间通信之信号机制2

文章目录 信号阻塞代码验证验证信号的阻塞验证信号的阻塞不影响信号注册验证可靠信号不会丢信号,不可靠信号会丢信号验证9号和19号信号不能被阻塞 用信号解决僵尸进程volatile关键字 信号阻塞代码验证 在上篇详解信号机制的博文中,我们提到了设置阻塞位…

Vue-9.集成(.editorconfig、.eslintrc.js、.prettierrc)

介绍 同时使用 .editorconfig、.prettierrc 和 .eslintrc.js 是很常见的做法,因为它们可以在不同层面上帮助确保代码的格式一致性和质量。这种组合可以在开发过程中提供全面的代码维护和质量保证。然而,这也可能增加一些复杂性,需要谨慎配置…

一文详解4种聚类算法及可视化(Python)

在这篇文章中,基于20家公司的股票价格时间序列数据。根据股票价格之间的相关性,看一下对这些公司进行聚类的四种不同方式。 苹果(AAPL),亚马逊(AMZN),Facebook(META&…

【Java】Java如何生成随机数?

文章目录 前言一、Random类介绍二、Random类生成随机数1.生成随机数2.nextInt()方法 三、使用场景四、官方提示总结 前言 我们在学习 Java 基础时就知道可以生成随机数,可以为我们枯燥的学习增加那么一丢丢的乐趣。本文就来介绍 Java 随机数。 一、Random类介绍 …

docker的资源控制及docker数据管理

文章目录 docker的资源控制及docker数据管理一.docker的资源控制1.CPU 资源控制1.1 资源控制工具1.2 cgroups有四大功能1.3 设置CPU使用率上限1.4 进行CPU压力测试1.5 设置50%的比例分配CPU使用时间上限1.6 设置CPU资源占用比(设置多个容器时才有效)1.6.…

合宙Air724UG LuatOS-Air LVGL API--简介

为何是 LVGL LVGL 是一个开源的图形库,它提供了创建嵌入式 GUI 所需的一切,具有易于使用的图形元素、漂亮的视觉效果和低内存占用的特点。 LVGL特点: 强大的 控件 :按钮、图表、列表、滑动条、图像等 高级图形引擎:动…

【Visual Studio】生成.i文件

环境 VS版本:VS2013 问题 如何生成.i预编译文件? 步骤 1、打开VS项目属性,打开C/C\预处理器页面,【预处理到文件】选择是,开启。 2、生成文件如下。 3、正常编译需要关闭此选项。

ORB-SLAM2学习笔记9之图像帧Frame

文章目录 0 引言1 Frame类1.1 构造和重载函数1.1.1 双目相机1.1.2 RGBD相机1.1.3 单目相机 1.2 成员函数1.2.1 特征点去畸变1.2.2 特征点网格分配1.2.3 双目匹配1.2.4 RGBD相机深度计算 1.3 成员变量 2 Frame类的用途 0 引言 ORB-SLAM2学习笔记7详细了解了System主类和多线程和…

安卓图形显示系统

Android图形显示系统 Android图形显示系统是Android比较重要的一个子系统,和很多其他子系统的关联紧密。 Android图形系统比较复杂,这里我们从整体上理一遍,细节留待后期再去深入。Android图形系统主要包括以下几个方面: - 渲染…

Shell编程及自动化运维实现

Linux Shell编程及自动化运维实现 变量 Linux Shell编程及自动化运维实现 判断 Linux Shell编程及自动化运维实现 循环 Linux Shell编程及自动化运维实现 数组和函数 Linux Shell编程及自动化运维实现 三剑客 Linux Shell编程及自动化运维实现 综合实战 什么是…

API 接口选择那个?RESTful、GraphQL、gRPC、WebSocket、Webhook

大家好,我是比特桃。目前我们的生活紧紧地被大量互联网服务所包围,互联网上每天都有数百亿次API调用。API 是两个设备相互通讯的一种方式,人们在手机上每次指尖的悦动,背后都是 API 接口的调用。 本文将列举常见的一些 API 接口&…

code论坛系统测试

目录 一 项目介绍**项目名称****项目介绍****项目功能****项目展示** 二 测试用例设计和功能测试1.测试用例设计**①登录页面****②注册页面****③首页****④发布帖子页面****⑤修改个人信息页面** 2.功能测试环境3.实际执行功能测试的部分操作**①登录页面****②注册页面****③…

ps怎么布尔运算多个图层合并?

我们经常使用Photoshop制作大型海报类,也可以用ps进行一些简单icon小图标的制作,这些icon图标多数应用在工具按钮上,比较小巧美观。但是对于ps对图形的操作经常会用到布尔运算的使用,今天小编就给大家详细讲解下ps布尔运算多个图层…

C语言和JavaScript中的默认排序行为对比

前言 今天在js里使用sort时遇见了一个不理解的现象 即使用sort默认排序后 9 从排序前的第一位被排到了最后一位.一开始我对js sort的理解和c一样,然后通过查阅后发现并不是这样. 正文 排序是一项常见而重要的操作。不同的编程语言提供了不同的排序函数&#xf…

常见的网络设备有哪些?分别有什么作用?

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、网络设备的概述 二、常见的网络设备 1、…

华星时空展锐芯片5g随身WiFi改串教程

前段时间入手了一个华正易尚,发现插手机卡可以用,插微闯移植卡直接没网,于是研究出展锐改串的教程分享给大家 ⭐注意:理论上所有的展锐芯片棒子都可以用,至于电池机请自行测试 话不多说,教程开始: 1.下载展锐AT改串驱…

Lnton羚通算法算力云平台如何在OpenCV-Python中使用cvui库创建复选框

CVUI 之 复选框 Python import numpy as np import cv2 import cvuidef checkbox_test():WINDOW_NAME Checkbox-Testchecked [False]# 创建画布frame np.zeros((300, 400, 3), np.uint8)# 初始化窗口cvui.init(WINDOW_NAME)while True:# 画布填色frame[:] (100, 200, 100…