linux搭建rtsp服务端,手把手搭建RTSP流媒体服务器
0.引言
本文主要讲解如何搭建RTSP流媒体服务器的过程,使用开源项目ZLMediaKit。通过这个开源项目,推RTSP流到服务器,然后拉流端可以拉取RTSP、RTMP等流。
ZLMediaKit码云链接:https://gitee.com/xia-chu/ZLMediaKit
ZLMediaKit的github链接:https://github.com/xiongziliang/ZLMediaKit
ZLMediaKit源码图片:
ZLMediaKit功能列表:
支持推流rtsp,推到zlmediak服务器,拉流可以拉取rtsp,rtmp,hls等。功能很多,而且这个流媒体服务器是支持h265。
1.安装编译器及其插件(如果有需要就安装)
1.1ZLMediaKit采⽤了C++11的语法和库,要求编译器⽀持完整的C++11标准,如下:
(1)linux上要求gcc 版本 >= 4.8(4.7应该也能⽀持)。
(2)macOS上clang >= ???(我也不知道,估计⼤部分不会遇到这个问题)。
(3)windows 上visual stuido >= 2015(vs2013某些版本也能编译通过,如果怕麻烦建议直接vs2017)。
1.2安装编译器
(1)如果你是debian系操作系统(包括ubuntu系⽤户),⼀般⾃带的gcc版本够新,你可以这样安装gcc编译器:
sudoapt-get install build-essential
(2)安装cmake
ZLMediaKit采⽤cmake来构建项⽬,通过cmake才能⽣成Makefile(或Xcode/VS⼯程),所以必须先安装cmake才能完成后续步骤。
sudoapt-get install cmake
(3)依赖库
ZLMediaKit可选依赖⼀些第三⽅库,这些库都不是必选的;在构建ZLMediaKit时,cmake能查找系统路径中的这些库,并根据安装情况选择是否开启相关特性,你可以选择安装这些依赖并启⽤相关特性:
安装openssl
flash player在播放rtmp时,采⽤的是复杂握⼿模式,如果不安装该库,flash player将播放不了zlmediakit 提供的rtmp url。同时ZLMediaKit的https/rtsps相关功能需要使⽤openssl才能开启。
安装ffmpeg
zlmediakit可以通过fork ffmpeg进程的⽅式实现多种协议的拉流,编译时不需要安装FFmpeg。
安装sdl、avcodec、avutil
这3个库供ZLMediaKit的test_player测试程序使⽤,你通常不需要安装这3个库。
Debian系(包括ubuntu)系统下安装其它依赖的⽅法:
注意:这个根据自己的实际情况去安装,如果已经安装了就不用再安装了。
sudoapt-get install libssl-dev
sudoapt-get install libsdl-dev
sudoapt-get install libavcodec-dev
sudoapt-get install libavutil-dev
sudoapt-get install ffmpeg
2.搭建RTSP流媒体服务器
(1)在如下目录路径,如下:
创建文件夹,输入命令:
mkdir ZLMediaKit_Stream_Server
(2)在如下目录路径,如下:
国内用户,最好使用码云连接,这样会比较快,输入下载命令:
gitclone--depth1 https://gitee.com/xia-chu/ZLMediaKit.git
下载界面如下:
下载完成后,这里会有个如下目录自动生成,如下:
进入ZLMediaKit的源码目录,输入命令:
cd ZLMediaKit/
ZLMediaKit的源码目录,如下界面:
(3)在如下目录和路径:
查看分支,输入命令:
git branch -a
界面如下:
(4)在如下目录和路径:
执行一条非常重要的命令(下载组件),千万不要忘记,如下:
gitsubmodule update--init
克隆完成后,如下界面:
(5)下载的是第三方库和组件(比如ffmpeg和rtmp等),进入如下目录和路径:
(6)输入如下命令,查看下载的文件,如下界面:
这里举例说明下,如果需要参考rtp的使用,可以参考如下目录的代码。其它代码也一样可以参考。
这里还有些是实现了reactor模型、线程封装(包括线程池)、工具,所以学习流媒体,后台相关的知识也是要学习和使用。
(7)ZLMediaKit提供了多平台的编译版本,进入如下目录:
查看gcc的版本,输入命令,如下:
gcc -v
查看版本号,界面如下:
注意:根据官网提示,只要这里的gcc版本大于4.8就可以,因为需要支持c++11版本。同样的,macos、windows也是可以编译。
(8)查看cmake版本:
使用cmake进行编译,在如下目录:
(9)构建工程,输入如下命令:
mkdir build
cd build
进入如下目录,执行命令:
cmake ..
如下界面:
编译过程,如下界面:
编译完成,如下界面:
(10)在如下目录,输入编译命令:
make -j4
make过程,如下界面:
make完成,如下界面:
(11)进入到如下目录:
查看MediaServer相关的命令,输入命令:
./MediaServer -h
如下界面:
(12)在相同目录,使用前台运行,输入如下命令:
./MediaServer
或守护进程模式启动
./MediaServer -d &
运行成功界面如下:
注意:如果自己在配置的时候,端口被占用了,可以修改配置文件,在如下目录,输入命令,并修改:
修改配置文件:
vim config.ini
修改端口号,界面如下:
3.测试
(1)使用rtsp方式推流命令
推流h264
ffmpeg -re -i source.200kbps.768x320.flv -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://172.16.204.139/live/test
推流h265
ffmpeg -re -i source.200kbps.768x320.flv -vcodec h265 -acodec aac -f rtsp -rtsp_transport tcp rtsp://172.16.204.139/live/test
(2)使用rtmp方式推流命令
#如果未安装FFmpeg,你也可以⽤obs推流
ffmpeg -re -i source.200kbps.768x320.flv -vcodec h264 -acodec aac -f flv rtmp://172.16.204.139/live/test
# RTMP标准不⽀持H265,但是国内有⾃⾏扩展的,如果你想让FFmpeg⽀持RTMP-H265,请按照此⽂章编译:
参考如下链接:
https://github.com/ksvc/FFmpeg/wiki/hevcpush
这个插件源码也是非常值得学习,界面如下:
(3)使用rtp方式推流命令
h264推流
ffmpeg -re -i source.200kbps.768x320.flv -vcodec h264 -acodec aac -f rtp_mpegts rtp://172.16.204.139:10000
h265推流
ffmpeg -re -i source.200kbps.768x320.flv -vcodec h265 -acodec aac -f rtp_mpegts rtp://172.16.204.139:10000
综上,ZLMediakit是支持rtsp、rtp、rtmp推流的,其中rtsp、rtp协议均支持h264和h265,而rtmp标准仅仅支持h264,如果需要支持h265,那仅仅需要添加插件才行,上面已经给出了链接地址。
其它平台(本次使用ubuntn系统)更详细的搭建步骤,可以参考官网如下地址:
https://github.com/xia-chu/ZLMediaKit/wiki/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B
界面如下:
rtsp推流界面如下:
推流上来后,服务器响应界面:
(4)使用ffplay拉流测试rtsp命令:
ffplay -rtsp_transport tcp rtsp://172.16.204.139/live/test
拉流测试rtsp结果界面:
(5)使用ffplay拉流测试rtmp命令:
ffplay rtmp://172.16.204.139/live/test
拉流测试rtmp结果界面:
服务器最终断开的界面:
4.总结
linux搭建rtsp服务端,手把手搭建RTSP流媒体服务器相关推荐
- Linux下smba服务端的搭建和客户端的使用
我只是一个初学者,在配置smba的过程中遇到了很多问题,网上的教程不太全,所以,在这里写一份完整的文章,方便大家使用. 1.首先在添加删除软件库中找到smb的相关服务程序,安装上,一般都是自动安装. ...
- linux netty udp服务端,Netty实现简单UDP服务器(示例代码)
本文参考<Netty权威指南> 文件列表: ├── ChineseProverbClientHandler.java ├── ChineseProverbClient.java ├── C ...
- linux 进程sockfd fork,Linux下多进程服务端客户端模型一(单进程与多进程模型)...
本文将会简单介绍Linux下如何利用C库函数与系统调用编写一个完整的.初级可用的C-S模型. 一.基本模型: 1.1 首先服务器调用socket()函数建立一个套接字,然后bind()端口,开始l ...
- 一文学会快速搭建Janus服务端
1.概述 想要了解Janus,首先需要知道WebRTC以及Janus和WebRTC之间的关系,本文将会对这些内容做简单的介绍,同时也会介绍一下Janus的架构,Janus可以实现的功能,并展示如何快速 ...
- 如何在 MacOS 环境下搭建 SVN 服务端环境
文章目录 在服务端创建资源仓库 资源仓库访问权限配置 给资源仓库添加用户 配置用户组及用户的权限 启动 SVN 服务器 停止 SVN 服务器 SVN 是一个使用十分广泛的开放源代码的版本控制系统.在 ...
- SVN服务端的搭建和简单使用
SVN简单说明 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Su ...
- 关于游戏服务端的搭建
前一阵,一场突如其来的疫情,将我们都困在了家中,于是有了大把的时间,来做一些自己感兴趣的事情.当然,是打游戏咯. 不过只是打游戏,也太low了,完全不符合我们程序员的气质,我们作为网络世界中的 ...
- vue.js+koa2项目实战(四)搭建koa2服务端
搭建koa2服务端 安装两个版本的koa 一.版本安装 1.安装 koa1 npm install koa -g 注:必须安装到全局 2.安装 koa2 npm install koa@2 -g 二. ...
- HTML+JS+websocket 实现联机“游戏王”对战(十)- 搭建游戏服务端
目录: 游戏王联机卡牌对战 1 - 前言 游戏王联机卡牌对战 2 - 联机模式 游戏王联机卡牌对战 3 - 界面布局 游戏王联机卡牌对战 4 - 卡组系统 游戏王联机卡牌对战 5 - 卡片选中系统 游 ...
最新文章
- mvc存储Cookie和读取Cookie方法
- RDKit toolkit实战三:描述符计算及可视化
- python extractor_Python pyextractor包_程序模块 - PyPI - Python中文网
- python爬虫原理-爬虫原理解析
- java ListString 转换成带逗号的字符串
- UI设计入门书籍(未整理)
- java类获取声明,获取用于MethodInvocation的实际类而不是声明类 - java
- 大规模运行MongoDB应该知道的10件事
- java 布局管理器_有时在Java中,一个布局管理器是不够的
- 编写一个函数,计算下式当n=10和n=100的值。
- matlab 等高线_MATLAB作图实例:39:更改等高线图的填充颜色
- 如何判断基因组的重复区域_利用宏基因组数据组装巨病毒基因组的优势与限制...
- i7 6700k linux,i7-6700k超频至4.8G最稳定 i7-6700K开盖液态金属测试
- 佳能EOS R5逼出性能怪兽索尼A1,2021佳能如何接招?
- BlockingQueue的核心方法
- 软件测试——测试用例设计测试分类详解
- 什么是网站前端框架?目前常用的网站前端框架都有哪些?
- Boost电路小信号建模分析
- 采用Windows PowerShell运行conda activate xx出现 C:\Users\xxx\Documents\WindowsPowerShell\profile.ps1报错问题
- 在win10系统中应用iverilog(Icarus verilog)学习笔记
热门文章
- 基于labview开发平台的声音信号采集及处理系统设计
- python3.0下载用什么浏览器_用python写个类似浏览器的下载器,超简单的
- php 验证身份证是否成年
- android+那个+相机app+最好,手机相机软件哪个好App推荐 这几款帮你拍出不一样的图...
- PUP普通用户的身份运行
- 火狐浏览器图片不能显示的问题
- Imagination和安霸半导体联合开发达到ASIL级别的自动驾驶汽车HMI可视化技术
- pojnbsp;百炼nbsp;2965:玛雅历
- Linux嵌入式驱动开发07——GPIO驱动过程记录(飞凌开发板)
- 一起做RGB-D SLAM(8) (关于调试与补充内容)