百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

rtsp 服务器搭建

bigegpt 2024-08-10 12:05 12 浏览

rtsp 服务器搭建:

今天我们搭建这个 rtsp 服务器的名称叫做:ZLMediaKit,它是一个基于 C++11 的高性能运营级流媒体服务框架

功能图

如果你想了解更多关于这个服务器的功能和代码,可以去官网查看,这里我就不多说了,下面开始基于此搭建这个服务器;首先说明的是,我这里使用的环境是 ubuntu16.04,其实也可以用其它的环境搭建。

国内?户推荐从同步镜像?站 gitee 下载:

git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
root@txp-virtual-machine:/home/txp/share# mkdir rtsp
 
root@txp-virtual-machine:/home/txp/share# cd rtsp/
root@txp-virtual-machine:/home/txp/share/rtsp# ls
root@txp-virtual-machine:/home/txp/share/rtsp# git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git
Cloning into 'ZLMediaKit'...
remote: Enumerating objects: 548, done.
remote: Counting objects: 100% (548/548), done.
remote: Compressing objects: 100% (499/499), done.
remote: Total 548 (delta 60), reused 213 (delta 21), pack-reused 0
Receiving objects: 100% (548/548), 6.81 MiB | 132.00 KiB/s, done.
Resolving deltas: 100% (60/60), done.
Checking connectivity... done.

然后切换到 ZLMediaKit 目录下,记得执行下面这条语句:

root@txp-virtual-machine:/home/txp/share/rtsp# cd ZLMediaKit/
root@txp-virtual-machine:/home/txp/share/rtsp/ZLMediaKit# ls
3rdpart  AUTHORS                 build_for_linux.sh  CMakeLists.txt  docker   postman       server  www
Android  benchmark.md            build_for_mac.sh    conf            LICENSE  README_en.md  src
api      build_docker_images.sh  cmake               _config.yml     package  README.md     tests
 
root@txp-virtual-machine:/home/txp/share/rtsp/ZLMediaKit# git submodule update --init
Submodule 'ZLToolKit' (https://gitee.com/xia-chu/ZLToolKit) registered for path '3rdpart/ZLToolKit'
Submodule '3rdpart/media-server' (https://gitee.com/xia-chu/media-server) registered for path '3rdpart/media-server'
Cloning into '3rdpart/ZLToolKit'...
remote: Enumerating objects: 1203, done.
remote: Counting objects: 100% (1203/1203), done.
remote: Compressing objects: 100% (1081/1081), done.
remote: Total 5951 (delta 884), reused 161 (delta 120), pack-reused 4748
Receiving objects: 100% (5951/5951), 31.25 MiB | 120.00 KiB/s, done.
Resolving deltas: 100% (4406/4406), done.
Checking connectivity... done.
Submodule path '3rdpart/ZLToolKit': checked out '1df5d6823fc48598c23fd425c5187b0c417a734f'
Cloning into '3rdpart/media-server'...
remote: Enumerating objects: 10370, done.
remote: Counting objects: 100% (10370/10370), done.
remote: Compressing objects: 100% (3708/3708), done.
remote: Total 10370 (delta 7635), reused 9114 (delta 6544), pack-reused 0
Receiving objects: 100% (10370/10370), 2.78 MiB | 144.00 KiB/s, done.
Resolving deltas: 100% (7635/7635), done.
Checking connectivity... done.
Submodule path '3rdpart/media-server': checked out 'ec171caa4b28db0f6ea47bca2c0c9530f345698a'
 

注意:在编译这个代码之前,你的安装环境一定要安装 cmake 和 gcc 版本在 4.8 以上,不然的话,可能会出现问题。

领取音视频开发资料包音视频流媒体高级开发FFmpegWebRTCRTMPRTSPHLSRTP播放器

2、安装依赖库:

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 个库。

#除了openssl,其他其实都可以不安装
sudo apt-get install libssl-dev
sudo apt-get install libsdl-dev
sudo apt-get install libavcodec-dev
sudo apt-get install libavutil-dev
sudo apt-get install ffmpeg

3、开始编译:

  • 先建立一个 build 目录,然后切换到该目录下去:
root@txp-virtual-machine:/home/txp/share/rtsp/ZLMediaKit# mkdir build
root@txp-virtual-machine:/home/txp/share/rtsp/ZLMediaKit# cd build
  • cmake
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Debug版本
-- found library:/usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so,ENABLE_OPENSSL defined
-- Performing Test HAVE_MYSQL_OPT_EMBEDDED_CONNECTION
-- Performing Test HAVE_MYSQL_OPT_EMBEDDED_CONNECTION - Failed
-- MySQL not found.
-- ENABLE_HLS defined
-- ENABLE_MP4 defined
 
  • 开始正式编译:make -j4:

4、开始运行:

ZLMediaKit 工程主要生成 3 种二进制目标文件,他们的生成的路径在 release 目录下,这些目标文件主要分为(这里我只介绍一种,另外一种感兴趣的朋友可以查看官网介绍哈!):

MediaServer 进程:

这是 ZLMediaKit 作为服务器的主进程,该进程可以在免去开发的情况下直接作为测试流媒体服务器使用,如果你需要更复杂的业务逻辑,可以通过 Web HOOK 和 RESTful API 实现,同时你可以通过配置文件控制其参数。

root@txp-virtual-machine:/home/txp/share/rtsp/ZLMediaKit/release# cd linux/Debug/
root@txp-virtual-machine:/home/txp/share/rtsp/ZLMediaKit/release/linux/Debug# ls
api_tester_pusher     libflv.a      libmpeg.a        tab               test_httpApi     test_rtcp    test_wsClient
api_tester_server     libjsoncpp.a  libzlmediakit.a  test_bench_proxy  test_httpClient  test_rtp     test_wsServer
api_tester_websocket  libmk_api.so  libzltoolkit.a   test_bench_pull   test_pusher      test_server
bom                   libmov.a      MediaServer      test_bench_push   test_pusherMp4   test_sortor
 

我们可以通过./MediaServer -h 了解启动参数:

root@txp-virtual-machine:/home/txp/share/rtsp/ZLMediaKit/release/linux/Debug# ./MediaServer -h
  -h  --help     无参  默认:null                                                            选填  打印此信息
  -d  --daemon   无参  默认:null                                                            选填  是否以Daemon方式启动
  -l  --level    有参  默认:0                                                               选填  日志等级,LTrace~LError(0~4)
  -m  --max_day  有参  默认:7                                                               选填  日志最多保存天数
  -c  --config   有参  默认:/home/txp/share/rtsp/ZLMediaKit/release/linux/Debug/config.ini  选填  配置文件路径
  -s  --ssl      有参  默认:/home/txp/share/rtsp/ZLMediaKit/release/linux/Debug/ssl.p12     选填  ssl证书文件或文件夹,支持p12/pem类型
  -t  --threads  有参  默认:2                                                               选填  启动事件触发线程数
  -v  --version  无参  默认:null                                                            选填  显示版本号

开始运行:

root@txp-virtual-machine:/home/txp/share/rtsp/ZLMediaKit/release/linux/Debug# ./MediaServer -d &
 
 
[1] 57310
root@txp-virtual-machine:/home/txp/share/rtsp/ZLMediaKit/release/linux/Debug# 2021-04-18 21:41:11.260 D MediaServer[57310-139825250957120] System.cpp:100 startDaemon | 启动子进程:57313
2021-04-18 21:41:11.260 I MediaServer[57313-139825250957120] System.cpp:130 systemSetup | core文件大小设置为:18446744073709551615
2021-04-18 21:41:11.269 I MediaServer[57313-139825250957120] System.cpp:139 systemSetup | 文件最大描述符个数设置为:1048576
2021-04-18 21:41:11.270 I MediaServer[57313-139825250957120] config.cpp:34 loadIniConfig | dump ini file to:/home/txp/share/rtsp/ZLMediaKit/release/linux/Debug/config.ini
2021-04-18 21:41:11.438 W MediaServer[57313-139825250957120] SSLUtil.cpp:98 loadPublicKey | error:02001002:system library:fopen:No such file or directory
2021-04-18 21:41:11.438 W MediaServer[57313-139825250957120] SSLUtil.cpp:126 loadPrivateKey | error:2006D080:BIO routines:BIO_new_file:no such file
2021-04-18 21:41:11.440 D MediaServer[57313-139825143346944] util.cpp:340 operator() | Stamp thread started!
2021-04-18 21:41:11.442 I MediaServer[57313-139825250957120] EventPoller.cpp:467 EventPollerPool | 创建EventPoller个数:2
2021-04-18 21:41:11.445 I MediaServer[57313-139825250957120] TcpServer.h:320 start_l | TCP Server listening on 0.0.0.0:554
2021-04-18 21:41:11.456 I MediaServer[57313-139825250957120] TcpServer.h:320 start_l | TCP Server listening on 0.0.0.0:332
2021-04-18 21:41:11.457 I MediaServer[57313-139825250957120] TcpServer.h:320 start_l | TCP Server listening on 0.0.0.0:1935
2021-04-18 21:41:11.458 I MediaServer[57313-139825250957120] TcpServer.h:320 start_l | TCP Server listening on 0.0.0.0:19350
2021-04-18 21:41:11.458 I MediaServer[57313-139825250957120] TcpServer.h:320 start_l | TCP Server listening on 0.0.0.0:80
2021-04-18 21:41:11.459 I MediaServer[57313-139825250957120] TcpServer.h:320 start_l | TCP Server listening on 0.0.0.0:443
2021-04-18 21:41:11.459 I MediaServer[57313-139825250957120] TcpServer.h:320 start_l | TCP Server listening on 0.0.0.0:9000
2021-04-18 21:41:11.461 I MediaServer[57313-139825250957120] TcpServer.h:320 start_l | TCP Server listening on 0.0.0.0:10000
2021-04-18 21:41:11.462 I MediaServer[57313-139825250957120] main.cpp:339 start_main | 已启动http api 接口
2021-04-18 21:41:11.463 I MediaServer[57313-139825250957120] main.cpp:341 start_main | 已启动http hook 接口

注意:上面的两条报错,没有关系,我们现在已经真正开启了 rtsp 服务器了。

测试 rtsp 服务器:

我们现在来把本地媒体文件推流到这个服务器上,然后再进行拉流播放试试,你可以使用 obs 或者 ffmpeg 命令来进行,这里我使用了 ffmpeg 来进行推流,我电脑本地的媒体文件 test.mp4 路径如下:

本地的 test.mp4 媒体文件

开始使用 ffmpeg 进行推流:

ffmpeg -re -i test.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://192.168.32.128/live/test

注意:后面的 ip 地址是你 ubuntu 搭建服务器的 ip 地址,这个千万不要弄错了,不然试验不会成功的哈!

推流过程

现在我来开始拉流播放,这里使用 ffplay 进行拉流播放:

ffplay -rtsp_transport tcp rtsp://192.168.32.128/live/test

拉流播放成功

上面是基于 rtsp 协议进行拉流的,我们也可以用 rtmp 来进行拉流播放;

ffplay rtmp:://192.168.32.128/live/test

rtmp 协议拉流播放

接着我们使用 udp 的方式来进行拉流,你会发现速度非常快:

ffplay -rtsp_transport udp rtsp://192.168.32.128/live/test

udp 方式拉流

相关推荐

5分钟调色大片的方法(5分钟调色大片的方法有哪些)

哈喽大家好。在大家印象中一定觉得ps非常难学非常难。大家不要着急,小编的教学都是针对ps零基础的同学的,而且非常实用哦。只要大家跟着图文练习一两遍,保证大家立马学会~!好了,废话少说,下面开始我们今天...

闪白特效原来是这么用的(闪白特效怎么使用)

作者|高艳侠订阅|010-86092062闪白特效是影视作品中应用比较多的效果之一,那么具体该在哪些场景使用闪白特效?具体该如何操作?下面就以AdobePremiere(以下简称PR)为例,...

ppt常用小图标去哪里找?3个矢量素材网站推荐!

ppt是一个注重可视化表达的演示载体,除了高清图片,ppt中另一类常用的素材是各种小图标,也叫矢量图标,巧妙运用小图标能提升整体美观度和表现力,那么ppt常用小图标去哪里找呢?为方便各位快速找到合适的...

有什么好用的截图录屏工具?试试这9款

经常有朋友反馈苦于缺乏截屏和录屏的趁手工具,本期我们分享几个相当好用的截屏和录屏工具,希望能帮到大家。ScreenToGifScreenToGif是一款免费且开源的录屏工具。此款工具最大的特点是可以...

配色苦手福音!专业快速色环配色PS插件

今天橘子老师给的大家介绍的是一款快速配色的插件,非常强大配色苦手福音来啦!(获取方式见文末)【插件介绍】配色在后期设计中占有主导地位,好的配色能让作品更加抢眼Coolorus这款专业的配色插件,能够...

如何用PS抠主体?(ps怎么抠主体)

1.主体法抠图-抠花苞和花梗导入一张荷花苞的照片,点击上图中顶部“选择”菜单栏,下拉单击“主体”。可以看到,只有花苞被选中,但是花梗并没有被选中。接下来单击上图中左侧工具栏的“快速选择工具”,上图中顶...

2799元的4K电视,有保障吗?(买4k电视机哪个品牌好)

在上一期《电脑报》的3·15专题报道中,我们揭露了一款不靠谱的42英寸4K智能电视——TCLD42A561U。这款售价2699元的4K智能电视不仅4K画质方面存在严重问题,而且各种功能和应用体验也不理...

苹果电脑的Touch Bar推出一段时间了 这款工具可以帮你开发适用于它的APP

距离苹果推出带有TouchBar的MacBookPro已经有一段时间了,除了那些像Adobe、Google和Microsoft大公司在开发适用于TouchBar的应用之外,其实还有很多独立的开...

如魔法般吸取颜色的桌灯(如魔法般吸取颜色的桌灯叫什么)

色彩为生活带来的感官刺激,逐渐被视为理所当然。一盏桌灯运用它的神奇力量,将隐藏于物件中的颜色逐一释放,成为装点环境的空间魔法师。ColorUp是一款可以改变颜色的吸色台灯,沿用传统灯泡的造型,融入了拾...

一篇文章带你用jquery mobile设计颜色拾取器

【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...

ps拾色器快捷键是什么?(ps2019拾色器快捷键)

ps拾色器快捷键是什么?文章末尾有获取方式,按照以下步骤就能自动获得!学会制作PS特效需要一定程度的耐心和毅力。初学者可以从基本的工具和技术开始学习,逐渐提高他们的技能水平。同时,观看更多优秀的特效作...

免费开源的 Windows 截图录屏工具,支持 OCR 识别和滚动截图等

功能很强大、安装很小巧的免费截图、录屏工具,提供很多使用的工具来帮我么能解决问题,推荐给大家。关于ShareXShareX是一款免费的windows工具,起初是一个小巧的截图工具,经过多年的迭...

入门到精通系列PS教程:第13篇 · 拾色器、颜色问题说明及补充

入门到精通系列PS教程:第13篇·拾色器、颜色问题说明及补充作者|侯潇问题说明我的第12篇教程里,有个小问题没有说清楚。要说是错误,又不算是错误,只是没有说准确。写完那篇教程后,因为已经到了深...

PS冷知识:用吸管工具吸取屏幕上的任意颜色

今天,我们给大家介绍PS中的一个冷知识:用吸管工具可以吸取屏幕上的任意颜色。其实,操作起来是非常简单的。大多数情况下,我们认为,PS的吸管工具只能吸取PS软件作图区域范围内的颜色,最多加上画布四周的...

Windows 11 将提供内置颜色选择器工具

Windows11内置了颜色选择器,可以扫描并识别屏幕上的颜色并生成颜色代码。此外,微软还利用人工智能技术,让屏幕上的文本扫描和选择变得更加便捷。这两项功能均已在SnippingToolv1...